java.lang.UnsatisfiedLinkError: нет rxtxSerial в java.library.path - PullRequest
16 голосов
/ 20 ноября 2011

Я пытаюсь использовать 64-битную библиотеку последовательной связи rxtx (загруженную из cloudhopper) с 64-битной Windows 7 и Eclipse.Я получаю сообщение: java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path.DLL находятся в /jre/lib dir, а также Windows/System32.RXTXcomm.jar находится в пути сборки для затмения, а также в jre/lib/ext dir.Я запустил монитор процессов в фоновом режиме и вижу, что RXTXcomm.jar, rxtxSerial.dll и rxtxParallel.dll все найдены и открыты, поэтому мне неясно, почему возникает эта проблема.

Любые предложения.

Ответы [ 12 ]

16 голосов
/ 28 ноября 2013

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

7 голосов
/ 14 декабря 2011

Вы можете установить librxtx-java пакет из репозитория для Ubuntu.

6 голосов
/ 20 августа 2012

Вы также можете добавить аргумент виртуальной машины:

-Djava.library.path=c:\path\to\dll\

или

-Djava.library.path=/path/to/lib/

Это сработало для меня.Также см. Этот вопрос .

4 голосов
/ 26 ноября 2012

Пользователь Windows : моя проблема заключалась в том, что я помещал файлы rxtxSerial.dll и rxtxParallel.dll в неправильный каталог.

В моем случае они были в [...] / jdk1.7.0_09 / bin / вместо [...] / jre7 / bin / , хотя пути может отличаться для разных версий Java.

В конце концов, это логика: если мы хотим, чтобы наш JAR работал вне нашей IDE, у нас должны быть dll в нашей среде выполнения Java, а не в нашей среде разработки:)

3 голосов
/ 18 мая 2015

Я решил эту проблему, добавив rxtxSerial.dll [jre 1.8.0_45 / bin] и RxTxcomm.jar [jre 1.8.0_45 / lib / ext]

2 голосов
/ 10 сентября 2012

У меня была такая же проблема даже после установки RXTXcomm.jar в каталоге Java \ jdk \ lib.На основании инструкций в http://www.jcontrol.org/download/readme_rxtx_en.html я нашел файлы rxtxSerial.dll и rxtxParallel.dll.Размещение их в каталоге bin не помогло, но размещение их в каталоге lib вместе с RXTXcomm.jar решило проблему.

2 голосов
/ 20 ноября 2011

Hy, у меня была такая же проблема при интеграции RXTXcomm в Netbeans под Ubuntu 11.10. Я предполагаю, что вы не копируете файлы в нужном месте, по крайней мере, это была моя проблема.

Под Ubuntu java устанавливается под usr / lib / jvm. НО здесь у меня было много машин (например, java-7-openjdk-i386 , java-7-common , java-6-openjdk ... ). В Netbeans я проверяю, какой путь JDK включен в проект, это был java-7-openjdk-i386 . поэтому я взял rxtxSerial.so (под windows это rxtxSerial.dll) и скопировал его в java-7-openjdk-i386 / jre / bin , и он работал как шарм.

Надеюсь, это поможет.

1 голос
/ 27 ноября 2012

ИСПРАВЛЕНО:

при использовании IDE, таких как Netbeans, он имеет свой собственный каталог для JRE, если вы, вероятно, устанавливали драйверы RXTX, но при запуске файла JAR вне вашей IDE эта ошибкапроисходит ... Решение - установить драйверы RXTX также внутри каталога JAVA JRE, который используется для запуска всех ваших файлов JAR.

1 голос
/ 29 апреля 2012

У меня была такая же проблема.Поэтому я установил 32-разрядный JDK и добавил эти RxTx файлы (x86) в папку Program files (x86) / java /... вместо Program files / java ... папка.Также я добавил эти RxTx .dll файлы (x86) в папку / System32 .После этого проблема была решена в моем приложении.

0 голосов
/ 12 марта 2019

У меня была такая же проблема.Я пытался запустить встроенный файл JAR из папки dist, и он не работал, даже если он работал из IDE NetBeans.Я скопировал файл rxtxSerial.dll в папку dist, где находился мой основной jar-файл, и он начал нормально работать.

У меня раньше была эта ошибка:

java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while
loading gnu.io.RXTXCommDriver
Exception in thread "Thread-7" java.lang.UnsatisfiedLinkError: no rxtxSerial in
java.library.path
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.loadLibrary0(Unknown Source)
        at java.lang.System.loadLibrary(Unknown Source)
        at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:123)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at org.smslib.helper.CommPortIdentifier.<clinit>(CommPortIdentifier.java
:72)
        at org.smslib.modem.SerialModemDriver.connectPort(SerialModemDriver.java
:69)
        at org.smslib.modem.AModemDriver.connect(AModemDriver.java:114)
        at org.smslib.modem.ModemGateway.startGateway(ModemGateway.java:189)
        at org.smslib.Service$1Starter.run(Service.java:277)
...