2010-06-04 103 views
-1

Possible Duplicate:
Exception in thread “main” java.lang.NoSuchMethodError: main异常在线程“主” java.lang.NoSuchMethodError:主

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 

    } 
} 
+4

嗨,欢迎在Stackoverflow。我们将不胜感激,如果您在未来的智能方式上提出更多的努力*) – BalusC 2010-06-04 02:18:30

+0

此社区Wiki问题列出了此常见问题的可能原因:http://stackoverflow.com/questions/5407250/原因-java-lang-nosuchmethoderror-main-exception-in-thread-main – 2011-06-28 14:37:54

回答

2

主要需要在顶层类,其名称对应于文件名 - 因此,如果“m”是的名称你的文件是主要的需求。请注意,按照惯例,类名以大写字母开头。

+0

不一定,'main'方法可以在类'B'中,它只是,'B'需要被调用而不''m' – OscarRyz 2010-06-04 02:32:42

+0

@Oscar:你说得对。 – JRL 2010-06-04 02:44:14

+0

+1 [..........] – OscarRyz 2010-06-04 03:27:02

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预期。

+0

顺便说一下,这将是一个更加对齐的Java风格格式:http://pastebin.com/qPvwVZi1 – OscarRyz 2010-06-04 02:29:24

1

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

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

相关问题