View Full Version : [java]creare un jar
ematocrito
10-04-2006, 16:56
Ciao a tutti,
ho un problema ho creato una semplice applicazione in java, utilizzando le swt,con eclipse e finche la eseguo sotto eclipse non ci sono problemi pero' se creo il jar e provo a laciarlo con il comando "java -jar filejar.jar" mi dice che mancano le librerie SWT.Qualcuno mi sa deire come si includono nel JAR.
Grazie.
I caricatori di classe standard non prelevano classi da un jar impacchettato in un altro jar dunque devi affiancare il jar delle librerie SWT al jar del tuo programma.
Per l'esecuzione puoi indicare nel file manifesto del jar eseguibile la necessità di un altro jar usando l'attributo Class-Path
Manifest-Version: 1.0
Main-Class: quel che l'è
Class-Path: swt.jar
Puoi installare le swt come estensione della piattaforma Java di esecuzione (copiandole se assendi nella cartella ext del JRE), puoi affidare la fornitura delle librerie a Java Web Start, attraverso l'elemento <resources> del descrittore jnlp oppure fare tutto a mano con un file batch di avvio del programma.
Non c'è che l'imbarazzo della scelta :).
edita il file Mainfest all'interno di jar e aggiungi una riga:
Class-Path: <swt jar path>
insieme alla tua applicazione dovrai distribuire il file swt.jar e la libreria nativa nella versione adeguata (windows, linux ecc.ecc)
Non c'è che l'imbarazzo della scelta :).
[OT] ma quando ho risposto io il tuo messaggio non c'era :what:
ematocrito
11-04-2006, 00:33
Scusate se vi rompo ancora ma ho ancora qualche problema...
Ho 2 jar (il mio e l'swt) nello stesso folder e ho aggiunto al mio manifest la riga "Class-Path:swt.jar" ma quando eseguo la chiamata mi da quest'errore
C:\>java -jar ema.jar
Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-win32-3139 in
java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:123)
at org.eclipse.swt.internal.win32.OS.<clinit>(OS.java:18)
at org.eclipse.swt.widgets.Display.<clinit>(Display.java:125)
at Simple.main(Simple.java:7)
la libreria swt-win32-3139 e' inclusa nel swt.jar
mi sapete dire cosa sbaglio per favore :mc: :mc:
Non sbagli nulla. Eclipse non fa una piega nell'eseguire il codice perchè Eclipse estende all'atto dell'esecuzione la tua piattaforma Java ad includere le SWT.
Tu devi fare lo stesso per distribuire la tua applicazione: estendere la piattaforma Java dell'utente ad includere tutto l'ambaradan.
Abbiamo detto che i jar nei jar non funzionano. Vale lo stesso per le librerie dinamiche: non sono rilevate se incluse nei jar.
Puoi piazzare la dll nella stessa cartella del jar (mi pare) e java la troverà, puoi metterla in un percorso diverso e cambiare il percorso di ricerca delle librerie dinamiche usando l'opzione -Djava.library.path=cartella, puoi infilarla come estensione permanente nella cartella /lib del JRE.
ematocrito
11-04-2006, 21:50
Grazie PGI-Bis mi hai risolto il problema!!!!! :cool:
maulattu
13-04-2006, 20:01
cerca il plugin di eclipse "fatjar"
http://fjep.sourceforge.net/
:read:
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.