Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do Java programs run without defining the main method?

Tags:

java

methods

main

I was looking through some Java source and noticed that the main method wasn't defined.

How does Java compile source code without knowing where to start?

like image 301
Korvin Szanto Avatar asked Sep 29 '11 00:09

Korvin Szanto


People also ask

Can we run without main method?

Yes, you can compile and execute without main method by using a static block. However, after static block executes, you will get an error saying no main method found.

Will Java compile without main method?

Yes, We can Compile and Execute a java program without Main function. Instead of that we can use static block to compile and Execute the program.


2 Answers

The main method is only used when the Java Virtual Machine is executing your code. Code cannot be executed without a main method but it can still be compiled.

When compiling code, you usually specify a set of files on the command line e.g.

javac MyClass1.java MyClass2.java

The Java compiler (javac) examines each class you passed to it and compiles it into a .class file.

One reason Java source code may be missing a main method is because it is designed to be used as a library, instead of being executed.

Something you may find interesting: although the source code compiled by the Java compiler does not need a main method, the source code for the Java compiler itself does have a main method.

like image 177
Jack Edmonds Avatar answered Oct 02 '22 14:10

Jack Edmonds


There is a difference between running and compiling. Java code can be compiled incrementally. You only need a main somewhere to run the code. Java "knows where to start" because the compiler is smart enough to arrange all the dependencies when you compile.

Indeed, if you are building a web application in some sort of standard container, your code probably won't have a main method. The container does, but you just write components that plug in.

like image 35
hvgotcodes Avatar answered Oct 02 '22 16:10

hvgotcodes