2012-07-30 70 views
3

我有一個簡單的hello世界程序有問題哈哈!我希望有人能夠對此有所瞭解。Java找不到方法主

所以錯誤IM接收如下:

$ javac Hello.java 
$ java Hello 
Exception in thread "main" java.lang.NoSuchMethodError: main 

因此,通過錯誤,我可以看到它的明顯缺少主力,但它的存在:

class Hello 
{ 
    public static void main(String argv) 
    { 
    System.out.println("hello world"); 
    } 
} 

我在Mac OS/X上如果有任何幫助。

+0

的String [] argv的,而不是字符串的argv – Sid 2012-08-03 15:31:54

回答

10

問題是您的方法沒有將String數組作爲參數。使用以下簽名:

public static void main(String[] argv) 

public static void main(String argv[]) 

其他有效的選項是:

public static void main(String ... argv) 

在Java語言規範此如下被告知:

的方法主要必須聲明爲public,static和void。它必須 指定一個形式參數(§8.4.1),其聲明類型是數組 字符串。

+0

笑,哇..這一切都被執行。所以'主'必須有一個參數發送? – Menztrual 2012-07-30 11:21:35

+0

12分鐘..直到那時,我的第一個出生 – Menztrual 2012-07-30 11:21:50

+0

啓動JVM時,您不必給它任何實際參數。在這種情況下,main方法將收到空數組。 – 2012-07-30 11:34:52

4

您在String[] argv...String... argv忘記[]。這個數組用於存儲參數用於爲您的類創建JVM的命令,如

java Hello argument0 argument1 argument2` 

等等。

4

主要方法有接受String[]簽名,你寫String這是不對的,

讓它

public static void main(String[] argv) 

varargs

public static void main(String... argv) 
4

你忘了把數組語法, 你甚至可以按照JAVA 1使用可變參數。5

public static void main(String... argv) 
2

問題是main簽名,這應該是

public static void main(String[] argv) 

或可能是

public static void main(String ... argv) // known as varargs 

,而不是public static void main(String argv)這是你的情況

看看this

的可變參數look

1

你的主要方法簽名是錯誤String,而不是String []

使用

public static void main(String[] argv) 

public static void main(String... argv) 

閱讀here

2
public static void main(String[] args) 
public static void main(String... args) 
public static void main(String args[]) 

Java程序啓動時的主要方法,具有上述方法的原型