2013-04-26 10 views
6

Quando creo un nuovo file main.java nel pacchetto di default nel mio progetto Eclipse, si genera un metodo main che assomiglia:Come definisco main (String [] args) in Java senza ricevere avvisi ed errori?

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

Ciò solleva immediatamente un avviso che dice This method has a constructor name. La correzione suggerita è di rimuovere il void:

public static main(String[] args) 
{ 
} 

Ora, piuttosto che un avvertimento, ottengo un errore: Illegal modifier for the constructor in type main; only public, protected & private are permitted. Se rimuovo il static, il mio codice ora assomiglia:

public main(String[] args) 
{ 
} 

Questa volta, ho ancora un errore, ma uno diverso che dice:

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

argggh! Ma questo mi riporta esattamente al punto in cui ho iniziato. Come definisco il metodo principale in modo da non ricevere errori o avvisi?

sto usando Eclipse Juno Service Release 2 e JavaSE-1.7. Si prega di notare, io sono molto nuovo di Java; Vengo da uno sfondo C#. Inoltre, questa è probabilmente una domanda doppia, ma non riesco a trovarla.

+2

la tua classe è chiamata anche "principale"? –

+1

Non dovresti usare parole chiave come 'main' come i nomi delle tue classi. –

+2

main non è una parola chiave. è solo una convenzione – tgkprog

risposta

13

Non chiamare la classe main, ma Main.

In generale, attenersi agli standard di codifica Java: iniziare i nomi delle classi con una maiuscola (Main anziché main) e non si verificheranno questi problemi.

3

Modificare il nome della classe da main a Main o qualcos'altro. Inoltre, seguendo lo JavaBean API specification, le tue classi devono essere in CamelCase con la prima lettera maiuscola.

non al 100% imparentata con la domanda, ma si dovrebbe anche non creare classi con i nomi delle classi Java JDK, per esempio String:

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

Questo non solo darà problemi al compilatore/JVM ma anche per i futuri lettori (ricorda che anche tu sei un futuro lettore del tuo codice).

Nota: per risolvere il codice di cui sopra, si riferisce solo a java.lang.String classe utilizzando il suo nome completo:

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

O, meglio ancora, modificare il nome della classe.

1

In java, il nome della classe e il nome del file devono corrispondere. Se si ha un file chiamato main.java, anche il nome della classe deve essere Main, e in tal caso, il metodo di costruzione sarà denominato main, quindi non si potrebbe avere un metodo main.

Cambia il tuo file e il nome della tua classe in qualcosa di diverso da main.

5

Se il nome del file è main.java, la classe deve essere denominata main, che è contro standard (le classi iniziano con una lettera maiuscola) ma è possibile. In una classe un metodo chiamato lo stesso della classe è considerato un costruttore.Quindi, per risolvere il tuo problema e adattare lo standard, rinomina la tua classe e il file a Main con una "M" maiuscola

Problemi correlati