2011-02-08 36 views

Respuesta

34

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(); 
+0

@aioobe ¿Puedo integrar la System.out en el programa original?disculpe la pregunta pero soy nuevo en java – vfgjrk

+1

No estoy seguro de entender su comentario, pero obtiene un 'Proceso' de' start() 'que le proporciona' getInputStream'/'getOutputStream'. – aioobe

+0

¡Está bien! muchas gracias – vfgjrk

3

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.

+1

Arrastre (pateando y gritando, si es necesario) las capacidades de Java 1.5 y ProcessBuilder. –

+0

Gracias, está funcionando. Muchas gracias. – Abdul

+0

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

3

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

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

+1

La pregunta es cómo ejecutar el archivo jar desde un programa, no cómo hacerlo desde la línea de comando. – Henrik

10
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)); 
+1

Utilice System.err.println (new String (c)); para imprimir los mensajes de error. –

2

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.

+1

¿Funciona esto fuera de una máquina de Windows? – katzenhut

0
  1. Agregar biblioteca frasco para su proyecto
  2. clase principal
  3. de importación (véase manifiesta en archivo jar)
  4. invocación de método estático principal con argumentos

    String args[] = {"-emaple","value"}; 
    PortMapperStarter.main(args); 
    
Cuestiones relacionadas