librerias - ¿Cómo inicio varios programas principales en un archivo.jar ejecutable de Java?
incluir librerias externas en un jar netbeans (3)
Estoy escribiendo un programa que contiene varios paquetes en él. Cada paquete tiene su propio programa principal que quiero que todos inicien simultáneamente cuando el .jar es ejecutado por un intérprete. Esto parece una pregunta bastante simple, pero cuando miré a mi alrededor, parece que la gente está usando hormigas (que nunca antes había usado) y otros métodos. ¿Existe una forma más sencilla en Eclipse de compilar un .jar con múltiples configuraciones de inicio? Mejor aún, ¿hay alguna forma de incluirlo en el código?
Si la mejor manera de lanzar esto es a través de una hormiga. ¿Qué tipo de secuencia de comandos de Ant escribiría si quisiera el lanzamiento? ... diga los programas principales en los paquetes com.myapp.package1.main, com.myapp.package2.main y com.myapp.package3.main. ¡Gracias por adelantado!
Probablemente me atendría a la solución MANIFEST, pero hay otra posibilidad de que esto se haga:
Process p = Runtime.getRuntime().exec("java -jar another.jar");
Pero aquí debe tener cuidado con la ruta y debe finalizar correctamente el proceso, de lo contrario, su máquina puede alcanzar el límite de descriptores de archivos.
Puede crear una clase principal "principal" que ejecute el resto.
El manifiesto jar le permite especificar opcionalmente no más de una clase principal. Esto se invoca cuando ejecutas java
con la bandera -jar
.
java -jar myapp.jar
Puede incluir varias clases principales en un solo contenedor, pero cada una (excepto la opcional 1 anterior) debe invocarse utilizando el indicador -classpath
y con el nombre completo de la clase principal especificada.
java -classpath myapp.jar com.mypackage.app.Main01 && /
java -classpath myapp.jar com.mypackage.app.Main02 && /
java -classpath myapp.jar com.mypackage.app.Main03
El ejemplo anterior generará tres máquinas virtuales Java separadas, cada una en su propio proceso. Obviamente, esto no cumple con el requisito de un ''jar ejecutable''.
Alternativamente, puede desear tener un método principal que inicie hilos separados, de modo que solo haya un proceso, pero una ejecución simultánea.
Ant no es una opción adecuada para ayudarte a resolver este problema. Sospecho que probablemente desee un único método principal que genere múltiples hilos. Siéntase libre de proporcionar más información sobre sus necesidades.