The answer to this question depends on the version of java you are using. Prior to JDK 7, the main method was not mandatory in a java program.
- You could write your full code under static block and it ran normally.
- The static block is first executed as soon as the class is loaded before the main(); the method is invoked and therefore before the main() is called. main is usually declared as static method and hence Java doesn’t need an object to call the main method.
- When you will give the run command(i.e java Test in the below-mentioned program in notepad), so compiler presumes Test is that class in which main() is there and since compiler load, the main() method, static blocks are ready to get executed. So here, it will run static block first and then it will see no main() is there. Therefore it will give “exception”, as exception comes while execution. However, if we don’t want an exception, we can terminate the program by
However, from JDK7 main method is mandatory. The compiler will verify first, whether main() is present or not. If your program doesn’t contain the main method, then you will get an error “main method not found in the class”. It will give an error (byte code verification error because in it’s byte code, main is not there) not an exception because the program has not run yet.
Note:- However, both the programs will get compile because for compilation we don’t need main() method.
Below is the screenshot of the output to help you to visualize the same thing, practically. I have run this program on Notepad so that you can able to understand why that exception has changed into error in the latest version.
This article is contributed by Gaurav Miglani. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
- Static Block and main() method in Java
- How to overload and override main method in Java
- In Java, Can we call the main() method of a class from another class?
- Main thread in Java
- Valid variants of main() in Java
- GFact 48 | Overloading main() in Java
- What are the main differences between the Java platform and other platforms?
- Replacing 'public' with 'private' in "main" in Java
- Understanding public static void main(String args) in Java
- Execute main() multiple times without using any other function or condition or recursion in Java
- Does JVM create object of Main class (the class with main())?
- Understanding "static" in "public static void main" in Java
- Main App Implements Runnable | Concurrent Programming Approach 2
- Java.util.Collections.rotate() Method in Java with Examples
- Java lang.Long.byteValue() method in Java with Examples
Improved By : AnshulVaidya