线程“main”中的异常java.lang.NoSuchMethodError:main

时间:2010-06-04 02:04:24

标签: java

  

可能重复:
  Exception in thread “main” java.lang.NoSuchMethodError: main

public class m
{
    int a; //class variable


    void f1()
    {
       int b=10;
       System.out.println(a);
       System.out.println(b);
    }
}
class B
{
   public static void main(String args[])
   {
      m ob=new m(); //object created
      ob.f1(); //calling f1 method

   }
}

3 个答案:

答案 0 :(得分:5)

我猜。

您正在尝试调用:

java m

由于您在课程B中定义了主要方法,因此应调用

java B

执行它。

这是我的测试:

$cat >m.java<<. 
> public class m
> {
>     int a; //class variable
>     void f1()
>     {
>        int b=10;
>        System.out.println(a);
>        System.out.println(b);
>     }
> }
> class B
> {
>    public static void main(String args[])
>    {
>       m ob=new m(); //object created
>       ob.f1(); //calling f1 method
>    }
> }
> .
$javac m.java 
$java m 
Exception in thread "main" java.lang.NoSuchMethodError: main
$java B
0
10
$

如果您看到,请按预期调用java B打印0 10

答案 1 :(得分:2)

Main需要位于顶级类中,其名称对应于文件名 - 因此,如果“m”是您需要的主文件名。请注意,按照约定,类名以大写字母开头。

答案 2 :(得分:1)

您是否使用java m调用Java程序? main方法在类B中定义,而不是m,因此,您需要java B命令来调用它。 如果您通过“与文件名相同”来推理它可能会令人困惑。

此外,将两个类放在一个文件中可能是一种不好的做法。