Incluso aunque OP solo está hablando de la String[] args
, quiero dar un ejemplo completo de public static void main(String[] args)
.
Public
: es un Modificador de acceso, que define quién puede acceder a este método. Público significa que cualquier Clase podrá acceder a este Método (si otras Clases pueden acceder a esta Clase).
Static
: es una palabra clave que identifica la cosa relacionada con la clase. Esto significa que el método o variable dado no está relacionado con la instancia, sino con la clase. Se puede acceder sin crear la instancia de una clase.
Void
: se utiliza para definir el tipo de retorno del método. Define lo que puede devolver el método. Void significa que el Método no devolverá ningún valor.
main
: es el nombre del método. La JVM busca este nombre de método como punto de partida para una aplicación con una firma particular únicamente.
String[] args
: es el parámetro del método principal.
Si observa el código fuente de JDK (jdk-src j2se src share bin java.c):
/ * Obtiene el método principal de la aplicación * / mainID = (* env) -> GetStaticMethodID (env, mainClass, "main", "([Ljava/lang/String;)V");
...
{ /* Make sure the main method is public */
...
mods = (*env)->CallIntMethod(env, obj, mid);
if ((mods & 1) == 0) { /* if (!Modifier.isPublic(mods)) ... */
message = "Main method not public.";
messageDest = JNI_TRUE;
goto leave;
...
You can see that the starting method in java must be named main
and must have the specific signature public static void main(String[] argumentos)
El código también nos dice que el public static void main(String[] args)
no está arreglado, si cambia el código en (jdk-src j2se src share bin java.c) a otra firma, funcionará, pero cambiar esto le dará otros posibles problemas debido al java especificaciones
Sin relación: Han pasado 7 años desde que OP hizo esta pregunta, supongo que OP ya puede responder su propia pregunta.