¿Cómo se puede ejecutar un progtwig Java sin método principal?

Posible duplicado:
Imprimir mensaje en la consola sin usar el método main ()

¿Puede alguien sugerir cómo se puede ejecutar un progtwig JAVA sin escribir un método principal

Por ejemplo:

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

¿Cómo se puede imprimir la línea de arriba en la consola sin utilizar el vacío público estático principal (String arg []) en la clase.

Hasta JDK6, puede usar un bloque de inicializador estático para imprimir el mensaje. De esta forma, tan pronto como se cargue su clase, se imprimirá el mensaje. El truco se convierte en usar otro progtwig para cargar su clase.

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

Por supuesto, puede ejecutar el progtwig como java Hello y verá el mensaje; sin embargo, el comando también fallará con un mensaje que indica:

Excepción en el hilo “principal” java.lang.NoSuchMethodError: main

[Editar] como notaron otros, puede evitar NoSuchmethodError simplemente llamando a System.exit(0) inmediatamente después de imprimir el mensaje.

A partir de JDK6 en adelante, ya no verá el mensaje del bloque de inicializador static ; detalles aquí .

Hasta e incluyendo Java 6 era posible hacer esto usando el Bloque de inicialización estático como se señaló en la pregunta Imprimir mensaje en la consola sin usar el método main () . Por ejemplo, usando el siguiente código:

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

System.exit(0) permite que el progtwig salga antes de que la JVM busque el método main ; de lo contrario, se generará el siguiente error:

Excepción en el hilo “principal” java.lang.NoSuchMethodError: main

En Java 7 , sin embargo, esto ya no funciona , aunque comstack, aparecerá el siguiente error cuando intente ejecutarlo:

El progtwig se compiló con éxito, pero no se encontró la clase principal. La clase principal debe contener el método: public static void main (String [] args).

Aquí una alternativa es escribir su propio iniciador, de esta manera puede definir puntos de entrada como desee.

En el artículo JVM Launcher encontrará la información necesaria para comenzar:

Este artículo explica cómo podemos crear un Java Virtual Machine Launcher (como java.exe o javaw.exe). Explora cómo Java Virtual Machine lanza una aplicación Java. Te da más ideas sobre el JDK o JRE que estás usando. Este iniciador es muy útil en Cygwin (emulador de Linux) con Java Native Interface. Este artículo supone una comprensión básica de JNI.

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

Ejecutar desde la línea de cm con java X

Los applets de lo que recuerdo no necesitan un método principal, aunque no estoy seguro de que sean técnicamente un progtwig.