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. Ключ для нас, чтобы исправить это было
- Используйте двоеточие ":" для разделения элементов java.library.path
- Используйте косую черту для разделителей каталогов
В нашем случае мы использовали относительный путь, как это
-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