Come si può eseguire un programma Java senza il metodo principale?

Possibile duplicato:
Stampa di messaggi sulla console senza utilizzare il metodo main ()

Qualcuno può suggerire come può funzionare un programma JAVA senza scrivere un metodo principale ..

Ad esempio:

System.out.println("Main not required to print this"); 

Come può la linea sopra essere stampata su console senza utilizzare il public static void main (String arg []) nella class.

Fino a JDK6, è ansible utilizzare un blocco di inizializzazione statico per stampare il messaggio. In questo modo, non appena la tua lezione viene caricata, il messaggio verrà stampato. Il trucco diventa quindi utilizzando un altro programma per caricare la tua class.

 public class Hello { static { System.out.println("Hello, World!"); } } 

Naturalmente, è ansible eseguire il programma come java Hello e vedrete il messaggio; tuttavia, anche il comando non riuscirà con un messaggio che indica:

Eccezione nella discussione “main” java.lang.NoSuchMethodError: main

[Modifica] come indicato da altri, puoi evitare il NoSuchmethodError semplicemente chiamando System.exit(0) immediatamente dopo aver stampato il messaggio.

A partire da JDK6 in poi, non si vede più il messaggio dal blocco di inizializzazione static ; dettagli qui .

Fino a Java 6 incluso, era ansible farlo utilizzando il blocco di inizializzazione statico come indicato nella domanda Stampa del messaggio su console senza utilizzare il metodo main () . Ad esempio, utilizzando il seguente codice:

 public class Foo { static { System.out.println("Message"); System.exit(0); } } 

System.exit(0) lascia l’uscita del programma prima che JVM ricerchi il metodo main , altrimenti verrà generato il seguente errore:

Eccezione nella discussione “main” java.lang.NoSuchMethodError: main

In Java 7 , tuttavia, questo non funziona più , anche se viene compilato, quando si tenta di eseguirlo viene visualizzato il seguente errore :

Il programma è stato compilato correttamente, ma la class principale non è stata trovata. La class principale dovrebbe contenere il metodo: public static void main (String [] args).

Qui un’alternativa è scrivere il proprio launcher, in questo modo è ansible definire i punti di ingresso come si desidera.

Nell’articolo JVM Launcher troverai le informazioni necessarie per iniziare:

Questo articolo spiega come creare un Java Virtual Machine Launcher (come java.exe o javaw.exe). Esplora come Java Virtual Machine avvia un’applicazione Java. Ti dà più idee sul JDK o JRE che stai utilizzando. Questo launcher è molto utile in Cygwin (emulatore Linux) con Java Native Interface. Questo articolo presuppone una conoscenza di base di JNI.

 public class X { static { System.out.println("Main not required to print this"); System.exit(0); }} 

Esegui da cmdline con java X

Applet da quello che ricordo non hanno bisogno di un metodo principale, anche se non sono sicuro che siano tecnicamente un programma.