java.lang.UnsatisfiedLinkError dans Linux
J'ai réussi à entrer dans une machine linux pour essayer de la touche de Raccourci de la bibliothèque suggéré dans cette réponse.
J'ai compilé le code d'exemple et maintenant je lance le programme, et j'ai le message suivant:
[oracle@machine jxgrabkey-0.2.1_i386]$ java -classpath lib/JXGrabKey.jar:Exemple JXGrabKeyTest Exception in thread "main" **java.lang.UnsatisfiedLinkError:** /home/oracle/javasample/jxgrabkey-0.2.1_i386/lib/libJXGrabKey.donc: /usr/lib/libstdc++..6: la version " GLIBCXX_3.4.9' not found (requis par /home/oracle/javasample/jxgrabkey-0.2.1_i386/lib/libJXGrabKey.donc) à java.lang.Moment de l'exécution._load(libgcj..7rh) à java.lang.Moment de l'exécution.charge(libgcj..7rh) à java.lang.Système.charge(libgcj..7rh) au JXGrabKeyTest.principale(JXGrabKeyTest.java:17)
Je sais comment gérer cela dans Windows ( juste en ajoutant de la DLL pour le CHEMIN d'accès env var ) mais je ne suis pas sûr à propos de linux.
J'ai lu quelque chose à propos de LD_LIBRARY_PATH et quelques autres env vars, mais je peux le faire fonctionner.
Des conseils?
MODIFIER
Après le soutien de mmyers pour identifier le problème et de la lecture ce fil et cette autre.
Je peux dire:
Mon système: Linux 2.6.18-53.el5
Ma version de GCC(s) est ( sont) :
gcc-c++-4.1.2-14.el5
gcc-gfortran-4.1.2-14.el5
libgcc-4.1.2-14.el5
gcc-4.1.2-14.el5
Problèmes est que j'ai besoin de gcc 4.2.0
Aaand il n'est apparemment pas gcc 4.2.0 pour mon système.
Je suppose que je dois attendre qu'il vienne à l'auteur ou le recompiler dans une version précédente.
mmyers, merci beaucoup pour votre aide.
OriginalL'auteur OscarRyz | 2009-02-11
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé
-Djava.library.path=/path/to/library
?EDIT: Re-lecture du message d'erreur, il me semble que la bibliothèque native vous êtes en train de charger tente de se lier à la version de la glibc 3.4.9, qui, apparemment, n'est pas installé. Pouvez-vous vérifier le numéro de version de la glibc-vous? Quelle distro Linux exécutez-vous?
EDIT2: Le problème semble être réduit à libstdc++. Je suis sur le bord de ma connaissance, mais ce fil pourrait être utile. Il suggère la mise à niveau vers gcc 4.2; les commentaires, vous semblez avoir de la version 4.1.2. Laissez-moi savoir si cela ne fonctionne pas.
edit: bien Sûr. Comment dois-je faire? :S ... est-il quelque chose comme de la glibc version? ....
la glibc n'est pas un exécutable, donc qui ne fonctionne pas. Quelle distro êtes-vous en cours d'exécution?
Ce n'
uname -rs
vous donner?uname -r rendements Linux 2.6.18-53.el5, je crois que j'ai trouvé la commande: rpm-q glibc les retours de la glibc 2.5-18
OriginalL'auteur Michael Myers
subes, JXGrabKey dev ici ...
Je ne sais pas beaucoup au sujet de cette erreur moi-même, mais votre exemple sur gcc et/ou libstdc++ devrait être le droit de
Personnellement, je suis en utilisant la version de gcc livré avec Ubuntu 8.10 atm. J'ai toujours coller à la dernière version livrée.
Version actuelle: g++ (Ubuntu 4.3.2-1ubuntu12) 4.3.2
Suivantes libstdc++ paquets sont installés sur ma machine:
http://packages.ubuntu.com/intrepid/libstdc++5
http://packages.ubuntu.com/intrepid/libstdc++6
Espère que cette aide, si vous trouvez quelque chose d'utile, dites-moi. 🙂
J'ai peut-être compiler jxgrabkey avec une ancienne version de gcc pour les rejets, de sorte qu'il est compatible? Quelqu'un aurait-il un conseil avisé? ^^
ok, si vous trouvez plus à ce sujet, s'il vous plaît dites-moi si vous réussissez à le faire, il serait bien si vous pourriez écrire un article de wiki à ce sujet sur le jxgrabkey wiki sur le site de sourceforge ^^ donc si d'autres personnes ont les mêmes problèmes, ils peuvent suivre vos directives. (et peut-être que je peux faire de la compatibilité des rejets)
Je vais avoir le même problème avec
WindRiver Workbenck
surUbuntu 14.06
qui est. J'ai installé ci-dessus suggère des paquets, mais cela ne fonctionne toujours pas pour moi... avez-vous d'autres indices? Je vous lis recompilé le compilateur C++, est-ce que j'ai à faire, trop? Mon currentr version de gcc est5.4.0
Vous n'avez pas besoin de recompiler le compilateur C++, vous devez recompiler le libjxgrabkey.donc, avec votre propre compilateur donc des liens vers votre version de libstdc++. Il suffit d'exécuter le jxgrabkey/trunk/misc/Ant/build.xml pour créer une version de cette subversion repo: sourceforge.net/p/jxgrabkey/code/HEAD/tree (vous devez avoir ANT ant.apache.org installé et un développeur c++ dépendances pour X11 et ainsi de suite)
Vous pouvez trouver un plus élaboré explication sur comment faire ici: sourceforge.net/p/jxgrabkey/bugs/6 peut-être que cela aide: sourceforge.net/p/jxgrabkey/bugs/8
OriginalL'auteur subes