2010-06-04 109 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命令來調用它。 如果您通過「與文件名相同」進行推理可能會引起混淆。

另外,將兩個類放在一個文件中可能是一種不好的做法。

相關問題