Foro sobre Java SE > ¿Como vuelvo al metodo main()?
No se puede.
¡ ops ! ¿Alguna sugerencia?
Seguramente podrás tener dentro del método una única función que sea la encargada de ejecutar lo que sea. Esa función se ejecutaría en el main y podrías llamarla desde cualquier punto.
En Java, el método main está pensado para ser el inicio y final de la aplicación.
Desconozco los motivos por los que quieres llamarlo más de una vez; pero es prácticamente seguro que tus requisitos tienen otra solución.
Lo habitual es que main inicialice una clase, -o varias, en función de los argumentos que se le puedan pasar a main-, que es la responsable de la ejecución de todas las especificaciones de la aplicación. Es en esa clase, o clases, donde se deben ejecutar los métodos necesarios, o la creación de nuevas instancias de otras tantas clases, y así sucesivamente.
Normalmente, cuando se presenta la "necesidad" de volver a ejecutar main, hay alguna inconsistencia en el diseño de la aplicación.
¿Podrías explicar con detalle el porqué de ese requisito que planteas?.
Si no estoy mal, reiniciar un main seria como reiniciar la instnaciona donde esta contenida.
se me ocurre que si tiene una instancia que herede de jframe que quieres reinicar podria hacer esto:
public void reiniciar(){
this.show();
System.exit(0);
}// no lo he probado
Aunque estoy mas de acuerdo con choces
Veamos, es un programa que consta de dos ejercicios, cuando termina el primero doy la opción a "¿Desea empezar de nuevo (S)?".
El código está en:
www.autodesguaces.com/java/main.htm
public static void repite(), EStá marcado con un comentario que pone // ******* A Q U I ****
Omitir los demás comentarios.
Agradecido de antemano.
PD. Tengo hasta esta noche para presentarlo.
@resalpa, el problema es que en cuanto ejecutas el System.exit(0); sales de la VM. Ese es el principal problema de "reiniciar" una aplicación Java.
En ocasiones se ha usado un "truco", que consiste en usar una aplicación como un "lanzador" de otra aplicación, de tal manera que al reiniciar la segunda, en realidad se devuelve el control a la primera, que vuelve a relanzar la segunda.
Pero es tan engorroso, y tan propenso a errores, que apenas lo he visto utilizado, para algo más que demos.
Con aplicaciones de NetBeans Platform, ese problema está resuelto: se puede reiniciar la aplicación sin problemas, gracias a las librerías internas de Platform:
LifeCycleManager http://bits.netbeans.org/7.0.1/javadoc/
Sin entrar a fondo en la estructura de la aplicación, y de antemano no lo he probado, creo que podrías intentar lo siguiente:
- Todo el bloque de código que debe poder repetirse, debería estar en un método, no en main.
- Dentro de main solamente debe incluirse código que se deba ejecutar una sola vez.
Tenéis razón, está fuera de las ejecuciones, que es donde debiera de estar, pero he descubierto : "... Puedes llamar al main() cuando quieras. Desde cualquier sitio pon
ClasePrincipal.main (null);.. " y funciona.
Gracias a todos, no volveré a caer en el mismo error.
¿con que comando se puede volver al metodo main, a que empiece a leer desde la primera linea del metodo.?
Quiero invocarlo de nuevo (como resetear el programa) desde cualquier punto de ejecución.
Gracias