Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
In occasione del proprio Snapdragon Summit Qualcomm annuncia i due nuovi chip per dispositivi mobile di fascia alta che entreranno nel mercato nel corso del 2027: tanta potenza a disposizione per elaborazioni di intelligenza artificiale sempre più complesse
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole!
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole!
Hogwarts arriva in fascia media grazie a realme, con una special edition che unisce la Quadra Light-Sensing Color-changing Tech, un baule in stile Hogwarts Express pieno di collezionabili e una scheda tecnica sostanzialmente identica al 16 Pro di partenza: ecco cosa cambia davvero, come si comporta nell'uso quotidiano e quanto vale in base al prezzo di 699,99 euro
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-10-2015, 16:39   #1
gabmac2
Senior Member
 
Iscritto dal: Jun 2009
Messaggi: 5705
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
gabmac2 è offline   Rispondi citando il messaggio o parte di esso
Old 04-10-2015, 20:45   #2
gabmac2
Senior Member
 
Iscritto dal: Jun 2009
Messaggi: 5705
nessuno?
gabmac2 è offline   Rispondi citando il messaggio o parte di esso
Old 05-10-2015, 08:57   #3
Daniels118
Senior Member
 
L'Avatar di Daniels118
 
Iscritto dal: Jan 2014
Messaggi: 852
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 è offline   Rispondi citando il messaggio o parte di esso
Old 05-10-2015, 14:15   #4
gabmac2
Senior Member
 
Iscritto dal: Jun 2009
Messaggi: 5705
esempi di codice?
gabmac2 è offline   Rispondi citando il messaggio o parte di esso
Old 05-10-2015, 15:54   #5
Daniels118
Senior Member
 
L'Avatar di Daniels118
 
Iscritto dal: Jan 2014
Messaggi: 852
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.

Ultima modifica di Daniels118 : 05-10-2015 alle 15:56.
Daniels118 è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2015, 15:52   #6
gabmac2
Senior Member
 
Iscritto dal: Jun 2009
Messaggi: 5705
risolto con Runtime.getRuntime().exec
si può passare al jar una stringa?
gabmac2 è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2015, 17:05   #7
Daniels118
Senior Member
 
L'Avatar di Daniels118
 
Iscritto dal: Jan 2014
Messaggi: 852
Certamente, la sintassi base è questa:
java -jar file.jar argomenti

E' ovvio che il main deve prevedere degli argomenti, altrimenti questi vengono semplicemente ignorati.
Daniels118 è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2015, 17:26   #8
gabmac2
Senior Member
 
Iscritto dal: Jun 2009
Messaggi: 5705
Quindi
String str="x";
Codice:
java -jar file.jar str
Codice:
void main(String[] args)
andrebbe bene?
gabmac2 è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2015, 07:33   #9
Daniels118
Senior Member
 
L'Avatar di Daniels118
 
Iscritto dal: Jan 2014
Messaggi: 852
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
Daniels118 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole! realme 16 Pro Harry Potter Edition: il nuovo mid...
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
Hanno bucato l'FBI e ora dettano le cond...
Standard sì, licenze no: la linea di Ope...
Guida all'acquisto: quale smartphone HON...
PS6 e nuova XBOX, i SoC avrebbero supera...
Alcuni frigoriferi smart di Samsung si a...
Italiani e IA, l'entusiasmo cala: avanti...
Robin Williams resuscitato dall'IA per p...
Acquista una RTX 5090 usata per risparmi...
CLOSEDQUORUM, il malware che usa quattro...
Microsoft: Calendar, People e Files vann...
Due missili su una scuola elementare ira...
Pirate Face è il Pirate Bay degli LLM: i...
ASUS ROG Azoth 96 HE: con gli switch mag...
Tutte le offerte Amazon aggiornate: sono...
DeepSeek punta sempre di più sui ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:11.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v