java.lang.UnsatisfiedLinkError: нет rxtxSerial в java.library.path, брошенном во время загрузки gnu.io.RXTXCommDriver

Fedora использую прямо сейчас (пакет установлен Package rxtx-2.2-0.5.20100211.fc15.i686 already installed and latest version ).

Я использовал / попробовал:

# locate librxtxSerial
/home/sun/Downloads/rxtx-2.1-7-bins-r2/Linux/i686-unknown-linux-gnu/librxtxSerial.so
/home/sun/Downloads/rxtx-2.1-7-bins-r2/Linux/ia64-unkown-linux-gnu/librxtxSerial.so
/home/sun/Downloads/rxtx-2.1-7-bins-r2/Linux/x86_64-unknown-linux-gnu/librxtxSerial.so
/home/sun/Downloads/rxtx-2.1-7-bins-r2/Mac_OS_X/librxtxSerial.jnilib
/home/sun/Downloads/rxtx-2.1-7-bins-r2/Solaris/sparc-solaris/sparc32-sun-solaris2.8/librxtxSerial-2.1-7.so
/home/sun/Downloads/rxtx-2.1-7-bins-r2/Solaris/sparc-solaris/sparc32-sun-solaris2.8/librxtxSerial.so
/home/sun/Downloads/rxtx-2.1-7-bins-r2/Solaris/sparc-solaris/sparc64-sun-solaris2.8/librxtxSerial-2.1-7.so
/home/sun/Downloads/rxtx-2.1-7-bins-r2/Solaris/sparc-solaris/sparc64-sun-solaris2.8/librxtxSerial.so
/usr/lib/rxtx/librxtxSerial-2.2pre1.so
/usr/lib/rxtx/librxtxSerial.so

Затем использовали:

-Djava.library.path=/usr/lib/rxtx/librxtxSerial.so -Djava.library.path=/usr/lib/jni

Но все же я всегда получаю следующее:

java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver
Exception in thread "main" java.lang.UnsatisfiedLinkError: no rxtxSerial 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 gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83)
    at main.Tty.sendCommand1(Tty.java:212)
    at main.Tty.main(Tty.java:236)

Как решить это?

Следовать за:

НЕПРАВИЛЬНО:

-Djava.library.path=/usr/lib/rxtx -Djava.library.path=/usr/lib/jni

ПРАВИЛЬНЫЙ

-Djava.library.path=/usr/lib/jni -Djava.library.path=/usr/lib/rxtx

5 ответов

Решение

Я думаю, проблема в том, что у вас есть несколько -Djava.library.path параметры, а второй перезаписывает значение первого. Значение также должно быть путем к папке, содержащей библиотеку, не включая имя библиотеки.

В системе Linux вы должны комбинировать оба параметра пути, используя двоеточие в качестве разделителя:

-Djava.library.path=/usr/lib/rxtx:/usr/lib/jni

Была такая же проблема с библиотекой v4l4j, установленной из репозиториев. В ununtu netbeans проект не запускался из IDE, но работал как jar.

Решается путем помещения *.so файлов в /usr/lib не /usr/lib/jni папка.

Проект -> Свойства -> Путь сборки Java -> Найдите свой.jar. Нажмите +, чтобы открыть свойства JAR. Выберите расположение нативной библиотеки и измените его так, чтобы он указывал на общую библиотеку RXTX (.DLL, .so, .dylib).

У нас была такая же проблема на Linux. Ключ для нас, чтобы исправить это было

  1. Используйте двоеточие ":" для разделения элементов java.library.path
  2. Используйте косую черту для разделителей каталогов

В нашем случае мы использовали относительный путь, как это

-Djava.library.path=jar/linux64:jars

Путь относительно пути запуска. Например, при запуске из netbeans каталог запуска является каталогом проекта.

Copy RXTXcomm.jar ---> <JAVA_HOME>\jre\lib\ext

Copy rxtxSerial.dll ---> <JAVA_HOME>\jre\bin

Copy rxtxParallel.dll ---> <JAVA_HOME>\jre\bin

Другие вопросы по тегам