Two Laptop Bag
The moose likes Beginning Java and the fly likes getting a java.lang.NoSuchMethodError: main Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of REST with Spring (video course) this week in the Spring forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "getting a java.lang.NoSuchMethodError: main" Watch "getting a java.lang.NoSuchMethodError: main" New topic

getting a java.lang.NoSuchMethodError: main

yadav mayank

Joined: Jan 12, 2010
Posts: 7
i just wrote my first program in Java and got that error.
please help , what should i do.

David Newton

Joined: Sep 29, 2008
Posts: 12617

Please UseCodeTags when posting code or configuration. Unformatted code and configuration is very difficult to read. You can edit your post to include them by using the button.

And welcome to JavaRanch!
Ulf Dittmer

Joined: Mar 22, 2005
Posts: 42959
How are you trying to run this code? Class PracticeTest should be public, and then you'd enter "java PracticeTest" on the command line.
Campbell Ritchie

Joined: Oct 13, 2005
Posts: 45289
Welcome to JavaRanch Have you got your problem sorted yet?
yadav mayank

Joined: Jan 12, 2010
Posts: 7
thanks frieds
i made Practice public but since my main was in PracticeTest and i was compiling : java Practice , i was getting that error.
my mistake
it should be compiled as : java PracticeTest.

but again i have a query , why should class PublicTest be public?
i made Practice public and compiled and ran using java PracticeTest....isnt it proper?
Efrain Morales

Joined: Oct 14, 2009
Posts: 12
Because the class that has the main method has to be accessible from the outside.
yadav mayank

Joined: Jan 12, 2010
Posts: 7
Thanks a lot friends for patiently replying to all my naieve questions.
Just one final question.
Tell me which of my understanding is true :

1)one java file can have as many classes as we want but only one class can be public and that should have main method also the name of the java file will be the name of the public class ie the class which has main.

2)one java file can have as many classes as we want and also as many public classes as we want and out of these public classes one should hav the "main" and the name of the java file will be the nameof the public class having main ().
fred rosenberger
lowercase baba

Joined: Oct 02, 2003
Posts: 11920

A .java file can have ONE public class, but may have none.

A public class may or may not have a main() method.

also, this is not true:
it should be compiled as : java PracticeTest

that is how you RUN it, not compile it. to compile it, you would have done something like


There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
Consider Paul's rocket mass heater.
subject: getting a java.lang.NoSuchMethodError: main
It's not a secret anymore!