public static void main(
String [] args) should be thought of as a "contractual agreement" between the programmer and the developers of the
Java langauge.
They agreed to start execution of your program at a well defined point in your code, and you need only provide the REQUIRED interface. So by not providing a main method that meets the "contract", you are "violating" your end of the agreement when you ask the Java language to RUN your code.
It's like telling someone to pull an object out of a glass box, but not providing any entry point to that box.
Macon