可能重复:
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
}
}
答案 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
命令来调用它。
如果您通过“与文件名相同”来推理它可能会令人困惑。
此外,将两个类放在一个文件中可能是一种不好的做法。