2011-02-08 18 views

risposta

34

Suggerisco di utilizzare un ProcessBuilder e di avviare una nuova JVM.

Ecco qualcosa per iniziare:

ProcessBuilder pb = new ProcessBuilder("/path/to/java", "-jar", "your.jar"); 
pb.directory(new File("preferred/working/directory")); 
Process p = pb.start(); 
+0

@aioobe Posso integrare la System.out nel programma originale?scusa la domanda ma sono nuovo in java – vfgjrk

+1

Non sono sicuro di aver capito il tuo commento, ma ottieni un 'Processo' indietro da' start() 'che ti fornisce' getInputStream'/'getOutputStream'. – aioobe

+0

ok funziona! Grazie mille – vfgjrk

3

In primo luogo, la descrizione del problema è un po 'poco chiaro. Non capisco se vuoi caricare le classi dal file jar da usare nella tua applicazione o il jar contiene un file principale che vuoi eseguire. Assumerò che è il secondo.

Se è così, qui ci sono molte opzioni. Il più semplice sarebbe il seguente:

String filePath; //where your jar is located. 
Runtime.exec(" java -jar " + filepath); 

Voila ... Se non è necessario eseguire il file jar, ma piuttosto caricare le classi fuori di esso, me lo faccia sapere.

+1

Ti preghiamo di trascinarti (calci e urla - se necessario) nelle abilità di Java 1.5 e ProcessBuilder. –

+0

Grazie, sta funzionando. Molte grazie. – Abdul

+0

Questa soluzione farà lo stesso di 'ProcessBuilder' (tranne se si vuole chiudere, ecc.), E bisogna digitare di meno. Nella mia causa avrò bisogno di un launcher che si chiuda da solo dopo aver aperto un barattolo, quindi è abbastanza per me. – Hydro

3

Un altro modo per farlo su Windows è:

Runtime.getRuntime().exec("cmd /c start jarFile"); 

questo modo è possibile impostare la priorità del processo, nonché (normale/basso/etc)

-1

1) Impostare la percorso classe dalle variabili di ambiente

2) Vai alla cartella in cui è presente il file jar

3) eseguire i seguenti comandi tramite prompt dei comandi

java-jar jarfilename

+1

La domanda è come eseguire il file jar da un programma, non come farlo dalla riga di 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

Utilizzare System.err.println (new String (c)); per stampare i messaggi di errore. –

2

È possibile eseguire un file jar da dove vuoi utilizzando questo codice solo una riga.

Desktop.getDesktop().open(new File("D:/FormsDesktop.jar")); 

dove

new File("your path to jar") 

Speranza che aiuta.

Grazie.

+1

Funziona al di fuori di una macchina Windows? – katzenhut

0
  1. Aggiungi biblioteca vaso al progetto
  2. Import classe principale (vedi manifesto nel file jar)
  3. Invoke metodo statico principale con argomenti

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