This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
If you find you can run it, that might be a feature of your ancient Java version.
Or rather a bug...
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Yes, older versions of Java allowed this, for no apparent reason. This changed around JDK 1.4. The JLS has always said that the main method must be public, although it doesn't say what should happen if it's not publuc. So one might argue that this behavior was simply unspecified, not technically a bug. Regardless, anyone who uses a private main method should consider the code to be extremely unreliable at best.