View Full Version : [Java] richiamare classi specifiche dal jar
DeltaDirac
20-09-2011, 22:00
Come posso creare un package jar (o zip) che contenga delle classi richiamabili da linea di comando?
Esempio: voglio creare l'archivio calcola.zip che contenga almeno due classi somma.class e sottrai.class.
Vorrei poter usare l'archivio con una chiamata del tipo:
java -cp calcola.zip somma 2 3
piuttosto che:
java -cp calcola.zip sottrai 10 5
e vedere il risultato (chissà perchè mi aspetto 5 e 5)
Ovviamente le due classi hanno entrambe un metodo main()
Con Netbeans riesco ad impostare solo una classe main attiva, e quindi il jar file generato contiene o l'una o l'altra classe eseguibile, mentre da linea di comando non riesco a far nulla di buono.
:confused:
Non puoi recuperare gli argomenti della linea di comando dall'array String[] args passato alla funzione main?
Troveresti in prima posizione "somma" o "differenza" da cui puoi decidere cosa fare. Ti crei una classe che utilizza le altre due, somma e sottrazione.
DeltaDirac
21-09-2011, 06:33
Non puoi recuperare gli argomenti della linea di comando dall'array String[] args passato alla funzione main?
Troveresti in prima posizione "somma" o "differenza" da cui puoi decidere cosa fare. Ti crei una classe che utilizza le altre due, somma e sottrazione.
Ciao Floris,
in realtà si: potrei fare come dici.
Però ho alcuni eseguibili che funzionano esattamente come detto: si lancia il bytecode con java -cp dal quale si evoca la classe voluta e quindi gli argomenti, e mi sono chiesto come sia realizzabile tutto ciò.
Vorrei capire meglio i meccanismi di gestione delle classi con metodi main() multipli nello stesso package.
Son di coccio, lo so :D
banryu79
21-09-2011, 08:19
Però ho alcuni eseguibili che funzionano esattamente come detto: si lancia il bytecode con java -cp dal quale si evoca la classe voluta e quindi gli argomenti, e mi sono chiesto come sia realizzabile tutto ciò.
Scusa, puoi postare due o tre esempi di queste invocazioni da riga di comando?
DeltaDirac
21-09-2011, 09:04
Scusa, puoi postare due o tre esempi di queste invocazioni da riga di comando?
Sono esattamente quelli riportati nel primo messaggio:
java -cp calcola.zip somma 2 3
piuttosto che:
java -cp calcola.zip sottrai 10 5
I sorgenti hanno ognuno un metodo main() in modo da renderli eseguibili
DeltaDirac
21-09-2011, 09:51
Era più semplice di quel che immaginassi:
1) si compilano i sorgenti delle classi ognuna col proprio metodo main():
javac classe_1.java classe_2.java... classe_n.java
2) si crea il file jar con:
jar -cf pack.jar classe_1.class classe_2.class... classe_n.class
3) si evocano le classi dal jar per nome usando l'opzione -cp :
java -cp pack.jar classe_1 <parametri classe_1>
java -cp pack.jar classe_2 <parametri classe_2>
Ma funziona solo con classi "allo stesso livello" e che non appartengono ad altri packages.
That's all. Good for newbie as me :muro:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.