View Full Version : Java - eseguire file jar da codice
Dopo la creazione di un "runnable jar" con Eclipse, l' esecuzione da terminale (da Ubuntu), avviene senza problemi
E' possibile richiamare quel file jar dal codice di una programma Java?
Grazie in anticipo
Daniels118
05-10-2015, 08:57
Certo che puoi, ed esistono almeno 2 strade:
1) demandi al sistema operativo l'esecuzione di un'altra jvm passandole il file jar come parametro;
2) metti il jar nel classpath e richiami direttamente la classe che contiene il main.
Daniels118
05-10-2015, 15:54
Per la prima strada puoi cercare uno dei tanti esempi in rete, eccone uno:
http://www.rgagnon.com/javadetails/java-0014.html
Per la seconda basta scrivere:
ClasseCheContieneIlMain.main("arg1", "arg2", ...);
Naturalmente il jar deve stare nel classpath, quindi il programma va lanciato così:
java -cp "Package1.jar;Package2.jar" MiaClasse
P.S. il secondo metodo può dare problemi se il programma chiamato esegue System.exit, e qui ci sarebbe da fare un discorso a parte, valuta tu che strada scegliere.
risolto con Runtime.getRuntime().exec
si può passare al jar una stringa?
Daniels118
07-10-2015, 17:05
Certamente, la sintassi base è questa:
java -jar file.jar argomenti
E' ovvio che il main deve prevedere degli argomenti, altrimenti questi vengono semplicemente ignorati.
Quindi
String str="x";
java -jar file.jar str
void main(String[] args)
andrebbe bene?
Daniels118
08-10-2015, 07:33
Che il main vada dichiarato in quel modo è fuori discussione.
Quando dicevo che il main deve prevedere degli argomenti, mi riferivo al main del programma chiamato.
Partendo dal presupposto che tu stia richiamando il jar attraverso il metodo exec, il comando deve essere costruito in questo modo:
exec("java -jar file.jar " + str)
oppure
exec("java -jar file.jar x")
Meglio ancora se usi l'overload che prevede un array con gli argomenti, così ti togli il disturbo di dover fare l'escape di eventuali caratteri speciali:
exec(new String[] {"java", "-jar", "file.jar", str})
o direttamente
exec(new String[] {"java", "-jar", "file.jar", "x"})
Se invece ti riferisci al jar che chiami da riga di comando devi fase così:
java -jar file.jar x
se vuoi usare una variabile per specificare l'argomento devi utilizzare la sintassi appropriata in base al sistema operativo, per esempio su windows:
set str=x
java -jar file.jar %str%
su linux:
str='x'
java -jar file.jar $str
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.