Stefano Albrecht: Jar -> Manifest -> Class-Path -> relativ?

Gruß an alle Forumsteilhabenden :~)

Die Lehrbücher lehren, dass die Class-Path-Angabe in der MANIFEST-Datei eines Java-Archivs relativ zum Archiv sind. Hier stoße ich auf ein Problem:
Die Main-Class-Angabe ist bei mir relativ, wie es auch sein sollte, bei der Class-Path-Angabe sucht er zwar relativ, jedoch nicht zum Archiv, sondern zum übergeordnetem Ordner des Archivs, bei mir also der Windows-Desktop.

MANIFEST-Datei:
Manifest-Version: 1.0
Class-Path: lib/mysql-connector-java-3.1.12-bin.jar
Main-Class: mmogserver/MMOG_Server
[NEWLINE]

Bei Start des Archivs findet er zwar die Mainclass, jedoch nicht lib/mysql-connector-java-3.1.12-bin.jar (oder besser com.mysql.jdbc.Driver). Wenn auf dem Desktop ein Ordner namens "lib" mit der Datei "mysql-connector-java-3.1.12-bin.jar" vorhanden ist, findet er sie (ich spreche von der ClassNotFoundException: com.mysql.jdbc.Driver).

Ich arbeite mit Eclipse unter Windows XP Sp2, und innerhalb des IDE läuft alles. Auch ein Ändern der Angabenreihenfolge innerhalb der Manifest-Datei ändert nichts (was man ja bekanntlich versuchen sollte).

Habt vielen Dank! :~)

Mit freundlichen Grüßen
Stefano Albrecht

  1. Hallo,

    Die Lehrbücher lehren, dass die Class-Path-Angabe in der MANIFEST-Datei eines Java-Archivs relativ zum Archiv sind.

    Ja? http://java.sun.com/docs/books/tutorial/deployment/jar/downman.html -> Note
    Sie sind relativ zum Speicherort des JAR-Files, verweisen aber ins lokale Dateisystem, nicht ins Archiv.

    Wenn auf dem Desktop ein Ordner namens "lib" mit der Datei "mysql-connector-java-3.1.12-bin.jar" vorhanden ist, findet er sie (ich spreche von der ClassNotFoundException: com.mysql.jdbc.Driver).

    Ja.
    Zitat aus dem Link oben:
    To load classes in JAR files within a JAR file into the class path, you must write custom code to load those classes.

    Hierfür gibt es http://one-jar.sourceforge.net/.

    viele Grüße

    Axel