日期:2014-05-20  浏览次数:21155 次

Java中main方法必须写在public类中吗?
测试代码如下:
class Test {
public static void main(String[] args){
T t = new T();
  t.m();
  }
}

public class T {
public void m(){
  System.out.println("类T");
  }
}

输出结果出现以下错误:Exception in thread “main” java.lang.NoSuchMethodError:main


环境变量设置是正确的,classpath为:“.;C:\Program Files\Java\jdk1.6.0_10\lib”,所以环境变量设置是没有问题的!

我在google和百度上都没有搜索到很到位的解答。希望各位朋友们说说您们的看法!!!谢谢了!!!

------解决方案--------------------
main 方法是程序的入口,JVM只会寻找main方法,找到后,才开始执行程序。而java中规定文件名要与public 类的类名保持一致,所以当你编译时,若按这样编译:javac Test.java 则会报错并提示你该程序中public 类不是该类;而按这样编译:javac T.java 则会提示LZ所提出的错误提示;因为JVM找不到程序入口,即main方法。最后当一个程序里只有一个类时,可以省略public,而当有多个时,必须有且只有一个public类,且文件名得与它同名。

至于为什么java中规定文件名必须跟public类的类名保持一致,这就涉及到JVM原理的问题了,LZ有兴趣可以看看相关资料。。。
------解决方案--------------------
你这是一个class文件中啊,如果你想在这个文件中写一个主方法,要么你就写成public class 。。。要么就写成 class。。。但是其他类,绝对不能写成public class,你这样写的意思就是你的主方法在你的T类,程序从你的T类作为入口,你那里面没有主方法当然不行了啊
------解决方案--------------------
探讨

我晕,我怎么没见过相关的要求

------解决方案--------------------
http://betterman-zeng.blogbus.com/logs/37800156.html 这个链接上有解释