java.lang.UnsatisfiedLinkError в Linux - PullRequest
       25

java.lang.UnsatisfiedLinkError в Linux

4 голосов
/ 12 февраля 2009

Мне удалось попасть на компьютер с Linux, чтобы попробовать библиотеку HotKey, предложенную в этого ответа.

Я скомпилировал пример кода, и теперь я запускаю программу и получаю следующее сообщение:

[oracle@machine jxgrabkey-0.2.1_i386]$ java -classpath lib/JXGrabKey.jar:Example JXGrabKeyTest

Exception in thread "main" **java.lang.UnsatisfiedLinkError:** /home/oracle/javasample/jxgrabkey-0.2.1_i386/lib/libJXGrabKey.so: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /home/oracle/javasample/jxgrabkey-0.2.1_i386/lib/libJXGrabKey.so)
   at java.lang.Runtime._load(libgcj.so.7rh)
   at java.lang.Runtime.load(libgcj.so.7rh)
   at java.lang.System.load(libgcj.so.7rh)
   at JXGrabKeyTest.main(JXGrabKeyTest.java:17)

Я знаю, как справиться с этим в Windows (просто добавив DLL в переменную PATH env), но я не уверен насчет linux.

Я читал кое-что о LD_LIBRARY_PATH и некоторых других переменных env, но я могу заставить его работать.

Любой совет?

EDIT

После поддержки от mmyers для выявления проблемы и прочтения этой темы и этой другой .

Я могу сказать:

Моя система: Linux 2.6.18-53.el5

Мои версии GCC: (10)

GCC-C ++ - 4.1.2-14.el5

НКУ-gfortran-4.1.2-14.el5

libgcc-4.1.2-14.el5

НКУ-4.1.2-14.el5

Проблема в том, что мне нужен gcc 4.2.0

Aa, и, очевидно, нет gcc 4.2.0 для моей системы.

Полагаю, мне придется подождать, пока оно придет, или автор перекомпилирует его в предыдущей версии.

mmyers, большое спасибо за вашу помощь.

Ответы [ 2 ]

5 голосов
/ 12 февраля 2009

Вы пробовали -Djava.library.path=/path/to/library?

EDIT: Перечитывая сообщение об ошибке, мне кажется, что загружаемая вами нативная библиотека пытается связать glibc версии 3.4.9, которая, очевидно, не установлена. Можете ли вы проверить, какая у вас версия glibc? Какой дистрибутив Linux вы используете?

EDIT2: Проблема, похоже, сужена до libstdc ++. Я на грани своих знаний, но эта тема может быть полезна. Он предлагает обновить до gcc 4.2; Судя по комментариям, у вас версия 4.1.2. Дайте мне знать, если это не сработает.

1 голос
/ 17 февраля 2009

subes, JXGrabKey здесь ...

Я сам немного знаю об этой ошибке, но вы должны быть правы в отношении gcc и / или libstdc ++

Лично я использую версию gcc, поставляемую с Ubuntu 8.10 atm. Я всегда придерживаюсь последней поставленной версии.

Текущая версия: g ++ (Ubuntu 4.3.2-1ubuntu12) 4.3.2

На моей машине установлены следующие пакеты libstdc ++: http://packages.ubuntu.com/intrepid/libstdc++5 http://packages.ubuntu.com/intrepid/libstdc++6

Надеюсь, это поможет, если вы найдете что-нибудь полезное, скажите мне. :) Может быть, мне нужно скомпилировать jxgrabkey со старой версией gcc для выпусков, чтобы она была совместима с другими версиями? У кого-нибудь есть мудрый совет? ^^

...