PDA

Visualizza la versione completa : [java] con eclipse si, da shell no...


UBoB
14-12-2004, 23:08
ciao a tutti, ho realizzato un'applicazione in java utilizzando eclipse, ed ho importanto alcune librerie nn presenti nel pacchetto standard. Ho esportato il progetto creando il file jar dell'intera applicazione per aver un unico eseguibile. Con eclipse funziona, invece da shell ho l'errore:

C:\Programmi\eclipse\workspace>java -jar file.jar
Opening: example.xml.
java.lang.NoClassDefFoundError: org/jdom/JDOMException
at MenuFrame.actionPerformed(MenuTest.java:287)
at javax.swing.AbstractButton.fireActionPerformed(Unk nown Source)
at javax.swing.AbstractButton$ForwardActionEvents.act ionPerformed(Unknow
n Source)
at javax.swing.DefaultButtonModel.fireActionPerformed (Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unk nown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$MouseInputH andler.mouseRelease
d(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent( Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(U nknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unkno wn Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierar chy(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

le nuove librerie sono in una sottocartella del progetto. :master:

Angelo1974
14-12-2004, 23:53
Semplice.... nel tuo classpath non c'č la libreria Jdom.... prova a fare cosė:
1) Apri il file .jar con winRar o winzip (puoi anche non decompattarlo... ti basta solo aprirlo)
2)vai in META-INF, prendi il file manifest.mf ed aggiungi:
Class-Path: lib/jdom.jar
3)sali di livello (abbandoni la directory META-INF dopo aver modificato e salvato il file Manifest.mf)e vai alla root
4)aggiungi in questo punto una direcotry chiamata lib con all'interno il file jdom.jar

Se tutto va bene dovrebbe funzicare. Ciao

UBoB
15-12-2004, 16:06
Come dici tu funziona solo se nella cartella dove c'e' l'eseguibile jar ci copio la cartella lib contenente le librerie esterne tipo jdom.jar, xerces.jar ecc.
Quello che volevo fare era includere tutto nel file Biblio.jar (come ho fatto) in modo che l'applicazione sia eseguibile da qualsiasi punto senza copiare cartelle lib, file di configurazione, ecc.

Il mio file Biblio.jar e' fatto cosi':
..
/META-INF
/lib
/image
MenuTest.class
Form.class
e tutte le altre classi e vari file

il file MANIFEST.MF e' fatto cosi':

Manifest-Version: 1.0
Main-Class: MenuTest
Class-Path: lib/jdom.jar xerces.jar lib/xalan.jar lib/avalon-framework-cvs-20020315.jar lib/batik.jar lib/crimson.jar lib/fop.jar lib/jaxp.jar lib/xml-apis.jar lib/saxpath.jar

forse devo aggiungere lib/ nelle mie classi quando utilizzo le librerie? ma a cosa servirebbe poi settare il path? :madai!?:

cmq grazie! :)

netarrow
15-12-2004, 21:01
se non ricordo male, aggiungendo la libreria nuova in

JAVA_HOME\jre\lib\ext

dove java_home č il path del jdk, ad esempio:

C:\j2sdk1.4.2_05\jre\lib\ext

dovrebbe venire trovato automaticamente.


:ciauz:

Loading