测试代码如下:
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和百度上都没有搜索到很到位的解答。希望各位朋友们说说您们的看法!!!谢谢了!!!

解决方案 »

  1.   

    代码没有问题 
    是你的环境设置有问题环境变量 
    设置JAVA_HOME:   C:\Program Files\Java\jdk1.6.0_10
    path: .;%JAVA_HOME%\bin;
      

  2.   


    谢谢,我去试试你的方法!
    但是我运行其他java程序没有问题啊,在dos中打javac也能显示用法选项的参数,这环境设置也有问题吗?
      

  3.   

    真tm蛋疼,哪有这么写的,一个类中只允许有一个public的类,并且类名还要与文件名相同,另外一个类不做为主类,public中的main才会被执行,你那个写在另外一个类中,public类中没有main方法,当然报错
      

  4.   

    这么写不对啊,一个类中只允许有一个public的类(而且还要作为主类),并且类名还要与文件名相同,  main方法肯定要写在public类中了
      

  5.   

    javac T.java  
    java T
    javac编译能通过,但是java运行就会出错误就是不知道main方法是不是必须写在public类中,如果是这样的话,java中应该会明确提出,而且也很容易
    能在谷歌或者百度搜索到这样的解答。但是现在这些都没有出现......
      

  6.   

    1.类中不管有没有public限定,都可以有main方法,它只是一个静态类方法.
    2.和八楼一样.
    3.写代码最好在每个类都写个main方法.便于以后调试和维护
    建议在网上下本书,thing in java  中文名java编程思想,java学习经典书籍
      

  7.   

         main 方法是程序的入口,JVM只会寻找main方法,找到后,才开始执行程序。而java中规定文件名要与public 类的类名保持一致,所以当你编译时,若按这样编译:javac Test.java 则会报错并提示你该程序中public 类不是该类;而按这样编译:javac T.java 则会提示LZ所提出的错误提示;因为JVM找不到程序入口,即main方法。最后当一个程序里只有一个类时,可以省略public,而当有多个时,必须有且只有一个public类,且文件名得与它同名。      至于为什么java中规定文件名必须跟public类的类名保持一致,这就涉及到JVM原理的问题了,LZ有兴趣可以看看相关资料
      

  8.   

    我保存的文件名是 T.java   我去查thinging in java 试试
      

  9.   

    7楼的朋友说的很对,你遇到的问题明显是public类里面没有main方法导致的。
      

  10.   

    你就把测试代码改成
    public class Test {
    public static void main(String[] args){
    T t = new T();
      t.m();
      }
    }class T {
    public void m(){
      System.out.println("类T");
      }
    }保存为Test.java文件
    然后javac Test.java
    java Test如果你不想改代码你就分段保存为两个文件
    class Test {
    public static void main(String[] args){
    T t = new T();
      t.m();
      }
    }
    保存为Test.javapublic class T {
    public void m(){
      System.out.println("类T");
      }
    }
    保存为T.java
    然后javac Test.java
    java Test你试一下看可以不?
      

  11.   

    大概可能是一个java源文件中只能有一个public class 
    而那个main()只能在这个public class 中
      

  12.   

    你编译完java程序  运行的时候 main函数 写在哪个类里面 你就java 运行哪个类
      

  13.   


    如果你非要用命令来执行的话首先 cd 至你类的路径下javac T.java
    java Test就行了
      

  14.   

    class Test {
    public void m(){
      System.out.println("类T");
      }
    }public class T {
    public static void main(String[] args){
    Test t = new Test();
      t.m();
      }}为嘛不这么写啊
      

  15.   

    C:\Program Files\Java\jdk1.6.0_10\lib\rt.jar;.;应该这样的,你装好之后用javac还有java验证,如果出现很多东西就OK了,同时你应该javac T.java编译;
    再用java Test运行(java命令后是主类名);
      

  16.   

    一个源文件中只能有一个public类
      

  17.   

    你这是一个class文件中啊,如果你想在这个文件中写一个主方法,要么你就写成public class 要么就写成 class但是其他类,绝对不能写成public class,你这样写的意思就是你的主方法在你的T类,程序从你的T类作为入口,你那里面没有主方法当然不行了啊
      

  18.   

    你这搞的。。
    public类里没有main方法,你运行这个类,肯定报异常,找不到main函数!
      

  19.   

    代码的问题,把main函数放到public的类中。
      

  20.   


    public class Test11 {
    public static void main(String[] args){
    Test11 t = new Test11();
      t.m();
      }
    public void m(){
      System.out.println("类T");
      }
    }
      

  21.   

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

  22.   

    package 书籍;public class a_1 { public void aa(){
    System.out.print(" 1111");
    }}
    package 书籍; class b_1 {

    public static void main(String[] args) {
     a_1 xx=new a_1();
         xx.aa(); }}
      试了,没问题呀
      

  23.   

    类中只能出现一个public 这个程序的文件名必须和限定为public的类名称一样,还有就是main方法在public下使用
      

  24.   


    我照链接博文里说的那样不定义public类,结果为java.lang.NoClassDefFoundError.
      

  25.   

    看来一个*.java文件中是必须要定义一个public class的。
      

  26.   

    这个是必须的   public 使得这个类很公开   static void mian 使得这个类  成为“主”类
      

  27.   

    不在PUBLIC 里面好像运行不了
      

  28.   

    全局才一个主函数,肯定是public 型的啦!
      

  29.   

    1.注意文件名保存为Test.java
    2.将T类的修饰public去掉
    3.OK了
      

  30.   

    javac T.java 生成Test.class和T.class(因为你写了2个类嘛)
    然后你的主方法写在Test类里面 那就 java Test运行呗
    不过eclipse这么写没有运行选项给你 可能是为了规范吧 当然这是我的猜测
    DOS下是没问题的
      

  31.   

    3L正确,,,,javac T.java, java Test