*Markus: Probleme mit Bibliotheken in JAR-Archiv

Beitrag lesen

Hallo,

ich habe einige JAR-Archive, die im entgültigen Programm (=ausführbares JAR-Archiv) benötigt werden.
Dazu habe ich das Problem, dass diese Archive nie gefunden werden, sobald ich das JAR-Archiv außerhalb des Verzeichnisses, in dem Eclipse das Projekt ablegt, starte.
Ich weiß gar nicht, was ich nicht schon alles ausprobiert habe, aber zur Zeit sieht es so aus:

TKV.jar ist das Endprodukt.

Es enthält folgende Fremdarchive:

bcmail-jdk15-135.jar  checkstyle-all-4.2.jar  junit.jar
bcprov-jdk15-135.jar  FontBox-0.1.0.jar       PDFBox-0.7.3.jar

Das Listing sieht so aus: $ jar tf TKV.jar

META-INF/
META-INF/MANIFEST.MF
DateiSpeicherung.class
Main.class
ProgrammGUI.class
Reader.class
Saver.class
TelefonFileFilter.class
TelefonTableModel.class
YessOneReader.class
libraries/bcmail-jdk15-135.jar
libraries/bcprov-jdk15-135.jar
libraries/checkstyle-all-4.2.jar
libraries/FontBox-0.1.0.jar
libraries/junit.jar
libraries/PDFBox-0.7.3.jar

Inhalt von MANIFEST.MF dieses Verzeichnisses:

jar fx TKV.jar META-INF/MANIFEST.MF && cat META-INF/MANIFEST.MF
Manifest-Version: 1.0
Class-Path: libraries/bcmail-jdk15-135.jar libraries/bcprov-jdk15-135.
 jar libraries/checkstyle-all-4.2.jar libraries/FontBox-0.1.0.jar libr
 aries/junit.jar libraries/PDFBox-0.7.3.jar
Created-By: 1.6.0_02 (Sun Microsystems Inc.)
Main-Class: Main

Sieht für mich eigentlich in Ordnung aus. Starte ich das Ganze nun, geht es so lange gut, bis eine der fremden Archive benötigt wird, denn dann passiert folgendes:

$ java -jar TKV.jar

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/pdfbo    x/util/PDFTextStripper
        at YessOneReader.<init>(YessOneReader.java:20)
        at ProgrammGUI.actionPerformed(ProgrammGUI.java:273)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:19    95)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.jav    a:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel    .java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242    )
        at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1    216)
        at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMen    uItemUI.java:1257)
        at java.awt.Component.processMouseEvent(Component.java:6038)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
        at java.awt.Component.processEvent(Component.java:5803)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4410)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4240)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322    )
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
        at java.awt.Container.dispatchEventImpl(Container.java:2102)
        at java.awt.Window.dispatchEventImpl(Window.java:2429)
        at java.awt.Component.dispatchEvent(Component.java:4240)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre    ad.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.    java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre    ad.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Was läuft hier falsch? In Eclipse funktioniert es, aber warum außerhalb von Eclipse nicht?

Markus