2013-04-26 94 views
6

當我在Eclipse項目,在默認包的新main.java文件,它會生成一個main方法,看起來像:如何在Java中定義main(String [] args)而不會收到警告和錯誤?

public static void main(String[] args) 
{ 
} 

這立即引發寫着This method has a constructor name警告。建議的解決方法是刪除void

public static main(String[] args) 
{ 
} 

現在,而不是一個警告,我得到一個錯誤:Illegal modifier for the constructor in type main; only public, protected & private are permitted。如果我刪除static,我的代碼現在看起來像:

public main(String[] args) 
{ 
} 

這一次,我還是得到一個錯誤,但不同的一個說:

Error: Main method not found in class main, please define the main method as: 
    public static void main(String[] args) 

Argggh!但是,這使我馬上回到我開始的地方。我如何定義主要方法以便我不會收到任何錯誤或警告?

我正在使用Eclipse Juno Service Release 2JavaSE-1.7。請注意,我對Java很陌生,我來自C#背景。此外,這可能是一個重複的問題,但我找不到它。

+2

是您的類叫'main'以及? – 2013-04-26 15:33:48

+1

你不應該使用'main'這樣的關鍵字作爲你的類的名字。 – 2013-04-26 15:36:15

+2

main不是關鍵字。它只是一個約定 – tgkprog 2013-04-26 17:27:43

回答

13

請勿撥打您的班級main,但Main。一般來說,堅持使用Java編碼標準:使用大寫(Main而不是main)開始類名,並且不會遇到這些問題。

3

將您班級的姓名從main更改爲Main或其他內容。此外,在JavaBean API specification之後,您的課程必須以駱駝大寫的首字母開頭。

不是100%有問題有關,但你應該還沒有創建與Java JDK類的名稱類,例如String

public class String { 
    public static void main(String[] args) { 
     System.out.println("Try to execute this program!"); 
    } 
} 

這不僅給問題的編譯器/ JVM,但也適用於未來的讀者(請記住,您也是未來讀者自己的代碼)。

注:要解決上面的代碼,只是使用它的全名是指java.lang.String類:

public class String { 
    public static void main(java.lang.String[] args) { 
     System.out.println("Try to execute this program!"); 
    } 
} 

甚至更​​好,改變類的名稱。

1

在java中,類名和文件名必須匹配。如果你有一個名爲main.java的文件,那麼類名也必須是Main,在這種情況下,構造函數方法將被命名爲main,所以你不能有一個main方法。

將您的文件和類名更改爲除main之外的其他名稱。

5

如果您命名文件main.java也必須將類別命名爲main,這與標準(類以大寫字母開頭)同樣可能。在一個類中,一個與該類相同的方法被認爲是一個構造函數。因此,要解決您的問題,並符合標準重命名您的類和文件到Main與大寫「M」

相關問題