2010-12-15 19 views

Respuesta

12

main no necesita ser una palabra clave en java para que la JVM la busque al inicio de la ejecución. No hay conflicto con otros métodos o variables también llamados main. Esta es simplemente la forma en que se diseñó la especificación de JVM. Lo más probable es que haya sido tomado prestado del lenguaje c.

Java Referencias de especificación: keywords, invoking main.

+2

+1 Tenga en cuenta que no solo importa el nombre del método, también debe ser 'static' (quizás' void', también) y tomar 'String []' como sus únicos argumentos. – Thilo

+0

@Thilo: Correcto. La firma del método debe ser 'public static void main (String [] args)' para ser llamado al inicio. – Asaph

+0

De vuelta en los viejos días de Mac OS 7 (¿u 8?), Donde no había línea de comando, Mac JVM también permitiría un main sin args. Afortunadamente, esto se ha unificado ahora (ya no funciona). – Thilo

10

Se acaba de especificar en el JLS.

12 Execution

...

máquina virtual de Java se inicia mediante la carga de una clase especificada y después de invocar el método main en esta clase especificada. La sección §12.1 describe los pasos de carga, vinculación e inicialización implicados en la ejecución de main, como una introducción a los conceptos de este capítulo. Las secciones adicionales especifican los detalles de la carga (§12.2), que une (§12.3), y la inicialización (§12.4).

...

12.1 Virtual Machine Start-Up

Una máquina virtual de Java se inicia la ejecución invocando el método main de alguna clase especificada, pasándole un único argumento, que es una matriz de cadenas. En los ejemplos en esta especificación, esta primera clase se llama típicamente Test.

...

12.1.4 Invoke Test.main

Finalmente, después de la terminación de la inicialización para la clase Test (durante el cual otros equipos de carga consecuente, que une, y de inicialización puede haber ocurrido), el método main de Test se invoca.

El método main debe declararse public, static y void. Debe aceptar un solo argumento que sea una matriz de cadenas.

0

Invoca este método mediante el uso de la reflexión. Usted puede echar un vistazo a las fuentes de Java Web Start por ejemplo

+0

Invoca este método mediante el uso de la reflexión. Entonces, esto significa que en tiempo de ejecución busca la clase que tiene el método principal. ¿Es correcto? –

+2

Al ejecutar el archivo jar, especifique el nombre de la clase con el método principal, o bien, puede especificar la clase principal dentro del manifiesto en jar. En Java Web Start, usted especifica la clase principal en el archivo jnlp. –

-2

principal es básicamente un indicador universal del método central de modo Java automáticamente hace que el método central cuando se les proporciona public static

public static void main 
+0

No estoy seguro de lo que quieres decir ... pero a mí no parece responder la pregunta. – icedwater

Cuestiones relacionadas