2010-03-22 107 views
0

當我嘗試編譯此:異常線程 「main」 java.lang.NoSuchMethodError:主要

public class Risk 
{ 
} 
class territory 
{ 

    public static void main (String[]arg) 
    { 
     System.out.println ("hi") ; 
    } 
} 

我收到此錯誤信息:

Exception in thread "main" java.lang.NoSuchMethodError: main 

怎麼回事錯在這裏?

+0

此社區Wiki問題列出了此常見問題的可能原因:http://stackoverflow.com/questions/5407250/causes-of-java-lang-nosuchmethoderror-main-exception-in-thread-main – 2011-06-28 14:37:27

回答

0

答案清盤正在什麼是我運行的類必須包含main否則它贏得沒有工作。我發佈這個,因爲,雖然其他答案給出了大致相同的信息,但他們並沒有明確表示。

1

你想要跑什麼課?如果您正在使用類territory,那將起作用。但是,Risk沒有main方法。

3

包含main()函數的類必須是公共的,並且每個文件只能定義一個公共類。你會想要有兩個單獨的文件Risk.javaTerritory.java

Risk.java:

public class Risk { 
} 

Territory.java:

public class Territory 
{ 

    public static void main (String[]arg) 
    { 
     System.out.println ("hi") ; 
    } 
} 

編輯:原來,這是不正確 - 我能夠用下面的命令行運行您的初始代碼:

java territory 

但我早些時候的評論指出了一個真正的應用程序,如風險遊戲的最佳做法。

-1

難道這只是一個間距問題?您原來的帖子顯示']'和'arg'之間沒有空格。

試試這個:

public static void main (String[] arg) 

或者,如果仍然不能正常工作:

public static void main (String arg[]) 
+3

-1不,這兩個都是非重要的考慮因素。 (通常我不會對帖子進行降級,但是那些表明格式更改會帶來差異的帖子會對此語言產生深刻的誤解。) – 2010-03-22 22:03:30

+0

答案可能是錯誤的,但並不意味着深刻的誤解。空白是重要的。 – 2010-03-22 22:25:00

+1

@阿德里安:有時候,是的。 ('class Foo'與'classFoo'不同)。其他時候,比如這裏,沒有。知道什麼時候有所作爲是一個有能力的程序員的標誌。 – 2010-03-22 22:44:58

0

你能弄清楚爲什麼這個例子導致同樣的問題?

public class Simple { 
    public void main(String args[]) { 
     System.out.println("Inside function"); 
    } 
} 

答:主要是因爲()應該是公開的靜態無效!

相關問題