0
why "main()" must in every java programm? i had run java program without main() by using static method only...
java course module1 question no. 2 they are saying correct if you click on option which says main() is must in every java programm...
22 odpowiedzi
+ 1
~ swim ~ i have done it in java 6...
+ 1
~ swim ~ yeah i got that warning whenever i executed my code...but at the end we can still execute program without main()...even though warning is at the end of complete execution of program on console...
0
~ swim ~ share information about that if you got reason for that warning...and other ways of running program without main()...
0
Here is the deal: if you don't have a main(), then where the hell will your program start? main() is not an obligation just to annoy you. It is mandatory because it is the only mechanism that lets the system know where the program starts.
If you've run programs where you didn't have to make a main() yourself, there are two possibilities:
1: you used a framework that provides a main() for you, and uses other rules as for where things start (possibly it doesn't even matter what goes first or last). Examples: JavaFX, Java applets, Java webapps.
2: you used Java jshell, the REPL code testing tool. It executes the things you type to it, when you type them to it. Things start with the first stuff you type.
0
~ swim ~ you are right now i can't able to run program without main() it is giving
Error: Main method not found so and so...It was on windows OS when i tried to run it without main and it's 1-2 year ago...but today tried same code in ubuntu 18.04 on terminal...also in visual studio code but it's giving Error...
kumesana there was a time when in was possible to run without main but not now...
0
~ swim ~ Windows-7 java6 in my laptop...
0
There was no such time and nothing has changed. Absence of main() isn't something to "warn" about, absence of main() means absence of a starting point and therefore of any ability to run. I already said that, it is the truth and it always was.
I understand that you were once mistaken about an ability to run without main(), but I am going to bet you are unable to tell me how did the system decide where to start?
Most likely, there was a main(). It didn't leave you an impression, or it was hidden from you by an existing framework you were using.
Or you were not even using Java. Whatever it is, this past thing you're talking about never was a thing.
0
kumesana don't worry you are not the one who didn't believed on me untill i prove this thing...
ok here is reason why we can able to write without main() that time (i don't know why it's not working today)...
Explanation:-
why we write public static void main() in java instead of only public void main() because the thing is in any class static method got served first in order they are written that's why if you write code like this
class classname{
static anyMethod(){
//defination
}
public static void main(){
//defination
}
}
here program will execute static anyMethod first after that it will send controls to main()...
But today i written same code and it's executing main() first not that first static method so i can say yes you are right...
0
~ swim ~ printing statement only and it worked i know that it's against the java rules but it worked...and also as you said earlier yes there may chances that windows might have old thing because i developed project in java-6 and java-8 but there might be chance while i am learning java i didn't upgraded it and version might be old...and i remember the version on which i had developed my projects...
0
The things you're thinking of are static *blocks*, not static *methods*.
Yes you can get them to run before Java notices that there isn't any main() method in the class you asked to run.
However, while the code is run indeed when you do that, (at least it probably still is), it requires quite some leniency to claim that "it works" and "you can" do that. After Java finishes loading the class and notices there is no main() it displays a huge error and makes it very clear it went wrong. It ruins the output and returns a system error that would immediately stop any script that cares about programs running without errors.
Not a normal operation, not silently failing, it is not normal to do and Java is making that very obvious.
Anyway the code was like that:
public class WithoutMain {
static {
System.out.println("Hello");
}
}
0
kumesana yeah sorry i said method instead of block...
0
Well as I said claiming that "it worked" requires a lot of leniency and delusion when facing the evidence.
So it would make sense that later versions of Java would try and detect the situation to reject it and tell you "no. That is *not* going to work. Maybe you can't tell the difference now, but when you will finally be able to, we cannot risk that you grew the habit of thinking you don't need clearly indentified main()"
0
kumesana ok...