Come posso eseguire un file jar locale da un programma java?Esegui file .jar da un programma Java
Il file jar non è nel percorso classe del programma chiamante Java.
Come posso eseguire un file jar locale da un programma java?Esegui file .jar da un programma Java
Il file jar non è nel percorso classe del programma chiamante Java.
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();
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.
Ti preghiamo di trascinarti (calci e urla - se necessario) nelle abilità di Java 1.5 e ProcessBuilder. –
Grazie, sta funzionando. Molte grazie. – Abdul
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
Potrebbe essere utile qualcosa come il seguente?
http://download.oracle.com/javase/tutorial/deployment/jar/jarclassloader.html
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) 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
La domanda è come eseguire il file jar da un programma, non come farlo dalla riga di 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));
Utilizzare System.err.println (new String (c)); per stampare i messaggi di errore. –
È 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.
Funziona al di fuori di una macchina Windows? – katzenhut
Invoke metodo statico principale con argomenti
String args[] = {"-emaple","value"};
PortMapperStarter.main(args);
@aioobe Posso integrare la System.out nel programma originale?scusa la domanda ma sono nuovo in java – vfgjrk
Non sono sicuro di aver capito il tuo commento, ma ottieni un 'Processo' indietro da' start() 'che ti fornisce' getInputStream'/'getOutputStream'. – aioobe
ok funziona! Grazie mille – vfgjrk