Classpath Library wird nicht geladen - nur im exportierten Zustand

Mikescher

Mitglied
Hallo,

ich habe gerade ein eher seltsames Problem. Ich programmiere zurzeit mit Eclipse eine OpenGL-Anwendung (mit JOGL). Dafür habe ich im Projekt-Ordner mir den Ordner "resources" anglelegt mit den Unterordnern "native" und "library". Wie die Namen schon sagen liegen in "library", die benutzten Jar's, und in "native" die dazugehörenden DLL's.

In Eclipse habe ich schön unter Project->Properties->Java Build Path->Libraries meine 4 Jars (gluegen-rt, jogl.all, nativewindow, newt.all) mit "Add Jar" hinzugefügt und unter "native library location" die DLL's angegeben.

In Eclipse funktioniert alles auch wie gewünscht (sowohl mit Run als auch mit Debug).

Nehme ich nun jedoch mein Projekt und Exportiere es (als "runnable jar-File"). Will die Jar nicht starten. Führe ich sie über die Konsole ("java -jar blubb.jar") aus (so dass ich mir die Konsole ansehen kann) spuckt er
Code:
java.lang.UnsatisfiedLinkError: no gluegen-rt in java.library.path
aus.

Ich bin etwas ratlos - vorallem da es Eclipse ja anstandslos ausführt - und hoffe dass mir jemand von euch helfen kann.

Mit freundlichen Grüßen
Mike
 
Wie die Meldung schon sagt werden die libs im "library path" gesucht. Unter Windows sind das z.B. alle Verzeichnisse die in der PATH Variablen gelistet sind.
Man kann die libs aber auch per Startparameter angeben:
Code:
java -Djava.library.path=C:\meinVerzeichnis\meineLib.dll ...
 
Heißt das ich muss die DLL's "manuell" mit der Jar dazugeben (du hast recht, denn dann funktioniert es) ? Gibt es keine Möglichkeit diese direkt in die Jar zu integrieren ?

Grüße
Mike
 
Hmmm, ok danke dir 🙂. Dann muss ich dran denken die Jar immer als zip mit den DLL's weiterzugeben.
Außerdem hab ich die Exception mal abgefangen - man will dem User doch sagen warum das Programm nicht läuft 😀

Grüße
Mike

[EDIT]Okay, eine Frage vielleicht noch 🙂. Jetzt müssen die dll's ja im gleichen Verzeichnis wie die Jar liegen. Kann ich den Pfad in Eclipse irgendwo relativ definieren - sprich dass die dll's zB im Ordner "res" liegen (würde im Explorer des Benutzers imho schöner ausehen)[/EDIT]
 
Zuletzt bearbeitet:

Zurück
Oben