PDA

View Full Version : [JAVA] Creare file bat che avvia programma jar e libreria di supporto swingx


Kurogane
29-03-2008, 17:13
Salve, ho creato un programma java che fa uso della libreria di swingx e ora, dopo aver creato il jar di questo programma non riesco a creare un file bat che carichi la liberia swingx e il programma che sono contenuti nella stessa cartella. Come devo scrivere il codice nel file bat?

andbin
29-03-2008, 17:20
dopo aver creato il jar di questo programmaSe hai creato un jar per la tua applicazione, hai sicuramente creato e usato un "manifest". Metti nel manifest l'attributo Class-Path per referenziare altri jar esterni che servono alla tua applicazione.

http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#Main%20Attributes

Kurogane
29-03-2008, 17:33
Si, ma se la posizione della cartella di swingx varia sempre, non mi serve... nessuno sa come come far si che il file bat apra il jar di swingx e del programma che sono nella stessa cartella del bat?

wizard1993
29-03-2008, 18:11
basta fare non indicare la radice, cioè se sono in C:\prova\ e devo accedere alla subdirectory 123 faccio semplicemente "cd \123"

andbin
29-03-2008, 18:48
Si, ma se la posizione della cartella di swingx varia sempre, non mi serve...I jar esterni alla tua applicazione, dovrebbero sempre "viaggiare" insieme al tuo jar.

Se una_lib.jar sta nella stessa directory di tua_app.jar, allora metti nel manifest: Class-Path: una_lib.jar

Se una_lib.jar sta nella directory "libs" che si trova nella directory dove c'è tua_app.jar, allora metti nel manifest: Class-Path: libs/una_lib.jar

E così via ....

Se invece "pretendi" di poter usare altre librerie dovunque siano state messe (quindi slegate dalla tua applicazione), allora è un altro paio di maniche ....

Mettere un path assoluto nell'attributo Class-Path del manifest non è una buona cosa, anche se tecnicamente funziona (e devi usare il protocollo file:// perché va specificato un URL!)

Se avvii il tuo jar con java -jar tua_app.jar, allora sappi che il "classpath" interno è formato solamente dal tuo jar più altri elencati nel manifest. Quindi specificare l'opzione -classpath o impostare la variabile di ambiente CLASSPATH non funziona perché sono ignorati.

Dovresti mettere tu in classpath il tuo jar e gli altri necessari e quindi specificare la classe di avvio, per esempio:

java -classpath path_tua_app\tua_app.jar;altro_path\una_lib.jar TuaClasseDiAvvio

Più lungo e noioso (nonché specifico della piattaforma).

Io il mio (modesto) consiglio te l'ho dato: posizionare le librerie in modo "relativo" al tuo jar in modo che "viaggino" sempre insieme alla tua applicazione ed usare l'attributo Class-Path del manifest.

Se vuoi scegliere altre strade (e probabilmente complicarti la vita), sei libero ....

Kurogane
30-03-2008, 10:52
Alla fine ho usato il tuo consiglio sul manifest, c'è voluto un pò per capirlo xkè eclipse mi complicava la vita :mad: cmq grazie

nuovoUtente86
12-04-2008, 01:20
basta fare non indicare la radice, cioè se sono in C:\prova\ e devo accedere alla subdirectory 123 faccio semplicemente "cd \123"

credo che lo "\" non vada messo! Il comando dovrebbe essere del tipo "cd 123" altrimenti da percorso non riconosciuto.Almeno dalle prove che ho fatto al volo è cosi!