#1 Le 23/10/2010, à 13:35
- izard
java3d no j3dcore-ogl in java.library.path
Bonjour,
J'utilise ubuntu 10.04. avec eclipse.
Lorsque j'essai d'exécuter un programme java3d à partir d'éclipse j'ai les messages suivant :
....
Exception in thread "main" java.lang.UnsatisfiedLinkError: no j3dcore-ogl in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681)
at java.lang.Runtime.loadLibrary0(Runtime.java:840)
at java.lang.System.loadLibrary(System.java:1047)
at javax.media.j3d.NativePipeline$1.run(NativePipeline.java:231)
...
Apparement le programme ne trouve pas j3dcore-ogl dans le chemin donné par "java.library.path".
Dans le programme que je veux exécuter, au tout début de main(String args[]) J'ai inclu les lignes :
String javaLibraryPath = System.getProperty("java.library.path");
System.out.println(javaLibraryPath);
J'obtiens la valeur suivante pour le "java.library.path" : "/home/mic/java3d/lib/i386:/home/mic/java3d/lib/i386"
Dans le répertoire /home/mic/java3d/lib/i386 se trouvent les fichiers :
libj3dcore-ogl.so et libj3dcore-ogl-cg.so
j'ai essayé de renommer les fichiers en :
j3dcore-ogl.so et j3dcore-ogl-cg.so
ou
j3dcore-ogl et j3dcore-ogl-cg
mais le message d'erreur reste le même.
Voici comment j'ai installé éclipse et java3d :
J'ai installé éclipse en décompressant l'archive eclipse-java-helios-SR1-linux-gtk.tar.gz dans un répertoire /home/mic/eclipse3.6
J'ai installé java3d en décompressant l'archive j3d-1_5_2-linux-i586.zip et en copiant le répertoire lib (et son contenu) dans un répertoire /home/mic/java3d
J'ai fait de multiples essais sans succès par exemple modifier la variable LD_LIBRARY_PATH, réinstaller éclipse ...
Pouvez-vous m'aider ?
Hors ligne
#2 Le 26/10/2010, à 13:44
- izard
Re : java3d no j3dcore-ogl in java.library.path
Suite de ma recherche ...
Il semblerait que le problème puisse provenir de ce que libj3dcore-ogl.so et libj3dcore-ogl-cg.so dépendent elles même d'autres bibliothèques qui seraient manquantes.
En lançant la commande ldd pour déterminer les dépendance j'obtiens pour libj3dcore-ogl.so
~$ ldd /home/mic/java3d/lib/i386/libj3dcore-ogl.so
linux-gate.so.1 => (0x002bc000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x008f6000)
libGL.so.1 => /usr/lib/nvidia-96/libGL.so.1 (0x00218000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x0031d000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x0094e000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x007e6000)
libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0x00110000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00e02000)
/lib/ld-linux.so.2 (0x00b29000)
libjawt.so => not found
libjvm.so => not found
libGLcore.so.1 => /usr/lib/nvidia-96/libGLcore.so.1 (0x00f5c000)
libnvidia-tls.so.1 => /usr/lib/nvidia-96/tls/libnvidia-tls.so.1 (0x00127000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00d36000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x00129000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x0050f000)
et pour libj3dcore-ogl-cg.so
~$ ldd /home/mic/java3d/lib/i386/libj3dcore-ogl-cg.so
linux-gate.so.1 => (0x00a78000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00e4b000)
libCg.so => not found
libCgGL.so => not found
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x00378000)
libGL.so.1 => /usr/lib/nvidia-96/libGL.so.1 (0x00518000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x00110000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x00f8a000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x00a49000)
libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0x00735000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00391000)
/lib/ld-linux.so.2 (0x00dc6000)
libGLcore.so.1 => /usr/lib/nvidia-96/libGLcore.so.1 (0x00f9a000)
libnvidia-tls.so.1 => /usr/lib/nvidia-96/tls/libnvidia-tls.so.1 (0x00e44000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00baf000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x0022d000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x0066d000)
La recherche des fichiers libCg.so et libCgGL.so sur mon disque dur donne "fichiers non trouvés".
L'instalation du nvidia-cg-toolkit à partir de la logithèque ubuntu fait disparaitre les messages :
libCg.so => not found
libCgGL.so => not found
La recherche des fichiers libjawt.so et libjvm.so sur mon disque montrent qu'ils existent dans le répertoire /usr/lib/jvm/java-6-openjdk/jre/lib/i386/
Pour faire disparaitre toutes les dépendances non satisfaites (du point de vu de la commande ldd) j'ai mis les fichiers libjvm.so , libjawt.so, et libmawt.so dans le répertoire /home/mic/java3d/lib/i386 ou j'ai mis la bibliothèque java 3D.
l'erreur que me donne éclipse lors de l'exécution du programme java 3d reste exactement la même :
Exception in thread "main" java.lang.UnsatisfiedLinkError: no j3dcore-ogl in java.library.path
Ayant lu que le jre de opejdk serait incompatible avec java3D je l'ai remplacée par le jre de sun mais mon erreur reste inchangée.
Quelqu'un aurait-il une idée pour identifier mon problème ?
Hors ligne
#3 Le 27/10/2010, à 08:31
- izard
Re : java3d no j3dcore-ogl in java.library.path
Beaucoup de temps perdu pour peu de chose, il y avait un problème d'instalation. Solution : après avoir installé le jre de sun dans un répertoire /home/mic/jre-sun (l'exécutable jre-6u22-linux-i586.bin se trouve dans un répertoire /home/mic/jre-sun/jre1.6.0_22) je tape les commandes suivantes dans la console :
cd /home/mic/jre-sun/jre1.6.0_22
sh /home/mic/java3d-1_5_1-linux-i586.bin
(Le fichier téléchargé java3d-1_5_1-linux-i586.bin se trouvait dans le répertoire /home/mic)
Après avoir répondu "yes" pour approuver la licence, c'est bon !
Hors ligne