Frage

Ich habe versucht, eine JAR-Datei ausführen - nennen wir es test.jar. - Das nutzt die Sybase jconn3.jar auf einem Unix-System

Ich habe eine MANIFEST.MF-Datei erstellt, die Folgendes hat:

Class-Path: $SYBASE/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar

Dies ergibt eine ClassNotFoundError. $ SYBASE ist die Systemvariable, die auf / opt / sybase13 Punkte; Ich habe auch versucht die folgenden:

Class-Path: /opt/sybase13/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar

und

Class-Path: opt/sybase13/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar

Wenn ich jedoch die jconn3.jar-Datei aus dem $ SYBASE / jConnect-6_0 / classes in das gleiche Verzeichnis wie test.jar kopieren und meine MANIFEST.MF aktualisieren, um wie folgt lauten:

Class-Path: jconn3.jar commons-net-1.3.0.jar

Die Anwendung läuft wie erwartet.

Nun, ich habe in der Lage gewesen, die jconn3.jar Datei funktioniert, um zu überprüfen, indem es lokal zu kopieren; meine MANIFEST.MF Datei, um den Pfad zu meiner Main-Klasse enthält, das ist so in Rede stehenden nicht hier.

Was denken Sie, könnte das Problem sein? Ich habe viel zu lange in dieser Sache gesucht. Dank!

War es hilfreich?

Lösung

Die Einträge in der Klasse-Pfad sind entweder in Bezug auf die JAR in die sie eingebettet sind (die Sie arbeiten) oder sind URLs. Um Ihre absoluten Pfade arbeiten, müssen Sie sie auf URLs konvertieren, zum Beispiel

file:/opt/sybase13/...

Es gibt keinen Mechanismus für Variablen.

Obwohl die JAR-Spezifikation es nicht eindeutig sagen, absolute file: Schema URLs in dem Klasse-Pfad Attribute funktionieren.

Andere Tipps

Umgebungsvariablen werden nicht durch den Klassenlader AFAIK readed. Jedoch Sie das Glas in einem Konfigurationsskript hinzufügen könnten

der Spezifikation Accoding die Einträge sind Verwandte in das Gefäß nicht absolut:

  

Class-Path:

     

Der Wert dieses Attributs gibt die relativen URLs der Erweiterungen oder Bibliotheken, die diese Anwendung oder Erweiterung benötigt. URLs werden durch eine oder mehrere Leerstellen getrennt. Der Anwendung oder Erweiterung Class Loader den Wert dieses Attribut verwendet, um seinen internen Suchpfad zu konstruieren.

http://java.sun.com /j2se/1.5.0/docs/guide/jar/jar.html #Manifest Spezifikation

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top