Java openGL - no gluegen-rt in java.library.path



  • Immer, wenn ich mein Programm starte, bekomme ich folgenden Fehler:

    Exception in thread "main" java.lang.UnsatisfiedLinkError: no gluegen-rt in java.library.path

    Aber das nur, wenn ich die jogl.jar und gluegen-rt.jar nicht in folgenden Verzeichnis habe:

    /usr/lib/jvm/java-6-openjdk/jre/lib/ext

    Lege ich die Dateien da wieder rein, funktioniert es.

    Ich lege bei meinen Programm immer diese Dateien dazu. Diese werden über die Manifest Datei geladen:

    Class-Path: lib/gluegen-rt.jar lib/jogl.jar

    Diese Zeile wurde automatisch von Netbeans eingefügt, da ich dort diese Dateien als Library eingestellt habe.

    Aber warum funktioniert das Ganze jetzt nicht? Die Benutzer sollten das nicht extra manuell installieren müssen.


  • Mod

    JOGL ist eine externe Bibliothek,. Die muss der Nutzer halt installiert haben. Genauso wie er eine lauffähige JRE installiert haben muss.

    Wenn Du auf die Idee kommst, die JOGL-Jars mitzuliefern, dann kann ich Dir gleich sagen, dass das nicht alles ist. JOGL hat auch noch einen nativen, plattformabhängigen Teil. Unter Linux hast Du dann auch noch ein paar ".so"-Dateien, die in den entsprechenden Verzeichnissen liegen müssen. Unter Windows hast Du andere Dateien. Zumindest bist Du so oder so darauf angewiesen, dass der Nutzer ein lauffähiges JOGL installiert hat.



  • Das mit den prüfen auf windows/linux und x86/amd64 sowie das laden der .so's und dll's habe ich bereits im Code. Aber wenn der Bneutzer JOGL selbst installieren muss, wozu ist dann das mit dem Classpath in der Manifest?

    Gibt es bereits installer für Jogl?



  • Lennard schrieb:

    Gibt es bereits installer für Jogl?

    Hast du mal über Webstart nachgedacht? Der letzten Stand den ich habe ist, dass Sun jogl sogar ein offizielles Zertifikat verpasst hat. Das heißt es kommt keine Sicherheitsabfrage wegen nativen Code.



  • Ich benutze aber kein Webstart.



  • Was ich nicht verstehe ist, dass System.load() keinen Fehler zurück gibt, was bedeutet, dass die Library geladen wurde. Aber warum kommt dann bei dem ersten jogl Befehl "no gluegen-rt".

    System.load("/home/lennard/Desktop/libgluegen-rt.so");
    

    ???



  • Sry wegen Tripplepost, aber ich kann als Gast ja nicht bearbeiten.

    Also, ich habe nun mal das mit dem -Djava.library.path=/foo/bar/ vor den Pfad zur .jar Datei geschrieben. Nun funktioniert das Ganze, ohne, dass ich die Natives im JVM-Ordner habe. Aber wie ich mach ich das jetzt für andere Betriebssysteme, weil es funktioniert ja nur, wenn man das mit -D im Terminal eingibt.

    BTW: Wenn ich das mit dem -D... benutze und ich noch System.load("bar.so"); im Code habe, steht da, dass die Library bereits geladen sei??? Wenn ich jedoch nur System.load benutze, wird die gluegen-rt nicht gefunden.


Log in to reply