¿Cómo podría ejecutar un archivo jar local desde un programa java?Ejecutar archivo .jar desde un programa Java
El archivo jar no se encuentra en la ruta de clase del programa llamador de Java.
¿Cómo podría ejecutar un archivo jar local desde un programa java?Ejecutar archivo .jar desde un programa Java
El archivo jar no se encuentra en la ruta de clase del programa llamador de Java.
Sugiero que use un ProcessBuilder
y comience una nueva JVM.
Aquí es algo para empezar:
ProcessBuilder pb = new ProcessBuilder("/path/to/java", "-jar", "your.jar");
pb.directory(new File("preferred/working/directory"));
Process p = pb.start();
En primer lugar, la descripción de su problema es un poco confuso. No entiendo si desea cargar las clases del archivo jar para usarlas en su aplicación o si el archivo contiene el archivo principal que desea ejecutar. Asumiré que es el segundo.
Si es así, tiene muchas opciones aquí. La más simple sería el siguiente:
String filePath; //where your jar is located.
Runtime.exec(" java -jar " + filepath);
Voila ... Si no es necesario ejecutar el archivo jar sino cargar las clases fuera de él, que me haga saber.
Arrastre (pateando y gritando, si es necesario) las capacidades de Java 1.5 y ProcessBuilder. –
Gracias, está funcionando. Muchas gracias. – Abdul
Esta solución hará lo mismo que la de 'ProcessBuilder' (excepto si desea cerrar, etc.) y deberá escribir menos. En mi causa necesitaré un lanzador que se cierre después de abrir un frasco, así que eso es suficiente para mí. – Hydro
¿Podría ser útil algo como lo siguiente?
http://download.oracle.com/javase/tutorial/deployment/jar/jarclassloader.html
Otra manera de hacerlo en Windows es:
Runtime.getRuntime().exec("cmd /c start jarFile");
esta manera se puede establecer la prioridad de su proceso, así (normal/bajo/etc)
1) Establecer el ruta de clase desde variables de entorno
2) Vaya a la carpeta donde existe el archivo jar
3) Ejecutar los siguientes comandos a través de línea de comandos
java-jar jarfilename
La pregunta es cómo ejecutar el archivo jar desde un programa, no cómo hacerlo desde la línea de comando. – Henrik
Process proc = Runtime.getRuntime().exec("java -jar Validate.jar");
proc.waitFor();
// Then retreive the process output
InputStream in = proc.getInputStream();
InputStream err = proc.getErrorStream();
byte b[]=new byte[in.available()];
in.read(b,0,b.length);
System.out.println(new String(b));
byte c[]=new byte[err.available()];
err.read(c,0,c.length);
System.out.println(new String(c));
Utilice System.err.println (new String (c)); para imprimir los mensajes de error. –
Se puede ejecutar un archivo jar desde donde cada vez que desee utilizando sólo el código de una línea.
Desktop.getDesktop().open(new File("D:/FormsDesktop.jar"));
donde
new File("your path to jar")
espero que ayude.
Gracias.
¿Funciona esto fuera de una máquina de Windows? – katzenhut
invocación de método estático principal con argumentos
String args[] = {"-emaple","value"};
PortMapperStarter.main(args);
@aioobe ¿Puedo integrar la System.out en el programa original?disculpe la pregunta pero soy nuevo en java – vfgjrk
No estoy seguro de entender su comentario, pero obtiene un 'Proceso' de' start() 'que le proporciona' getInputStream'/'getOutputStream'. – aioobe
¡Está bien! muchas gracias – vfgjrk