java.lang.UnsatisfiedLinkError:java.library.path中没有rxtxSerial

问题描述 投票:15回答:12

我试图使用64位rxtx串行通信库(从cloudhopper下载)与64位Windows 7和eclipse。我收到消息:java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path。 dlls在/jre/lib dir以及Windows/System32RXTXcomm.jar位于日食和jre/lib/ext目录的构建路径中。我在后台运行了进程监视器,看到RXTXcomm.jarrxtxSerial.dllrxtxParallel.dll都被发现并且已经打开,所以我不清楚为什么会出现这个问题。

有什么建议。

java rxtx
12个回答
17
投票

转到项目 - >属性 - > Java构建路径 - >找到您的.jar。单击+打开JAR的属性。选择本机库位置并编辑它以指向RXTX的共享库(.DLL,.so,.dylib)。


0
投票

在Windows上的Netbeans 5.5下,我需要右键单击屏幕左侧Projects下的Libraries,然后选择“Add JAR / Folder”,选择RXTXcomm.jar文件。只有这样我的

enter code here

成为一个有效的命令。此外,我遇到运行时错误,无法加载rxtxSerial.DLL库,因为它无法找到它。我需要右键单击项目名称,选择属性,选择在类别下运行,然后添加VM选项:条目

-Djava.library.path =“C:\其中,不断你-卡住rxtxSerial.DLL文件;%PATH%

例:

-Djava.library.path="C:\rxtx-2.1-7-bins-r2\Windows\i368-mingw32\;%PATH%"

虽然我确信有多种方法可以将目录添加到您的路径中,但这对我有用。注意我做了默认的NetBeans 5.5 / JDK 1.6.0 isntall接受所有默认选项(即点击下一步直到我完成),所以我没有修改我的java路径或任何东西。或者你可以将* .dll复制到C:\ Windows \ System32 \,Java会自动找到它。

请注意,在运行64位JRE时不能使用32位DLL:您将收到类似于以下内容的错误:

Can't load IA 32-bit .dll on a AMD 64-bit platform thrown while loading gnu.io.RXTXCommDriver

要解决此问题,只需安装32位JDK并在工具 - > Java平台 - >添加平台下在Netbeans中添加新平台,并更改项目设置以使用新创建的平台。确保你输入

"import gnu.io.*"

来自http://rxtx.qbang.org/wiki/index.php/Using_RXTX_In_NetBeans


0
投票

我有同样的问题,在Windows 10和eclipse上,问题是我有32位和64位的java,所以我安装了64位的RXTX库但是eclipse使用32位java环境,所以我做的是下载RXTX for 32位将必要的文件复制到C:ProgramFilesx86 / JAVA_HOME,如RXTX的说明,问题解决了。希望这有助于任何人。


0
投票

我有同样的问题。我试图从dist文件夹运行构建的jar文件,即使它是从NetBeans IDE工作也无法正常工作。我在我的主jar文件所在的dist文件夹中复制了rxtxSerial.dll文件,它开始工作正常。

我以前遇到过这个错误:

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)

7
投票

您可以从repo为Ubuntu安装librxtx-java软件包。


7
投票

您还可以添加虚拟机参数:

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

要么

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

这对我有用。另请参阅此question


4
投票

Windows用户:我的问题实际上是我将rxtxSerial.dll和rxtxParallel.dll文件放在错误的目录中。

就我而言,它们位于[...] / jdk1.7.0_09 / bin /而不是[...] / jre7 / bin /,尽管不同版本的Java的路径可能不同。

毕竟这是逻辑,如果我们希望我们的JAR在我们的IDE之外运行,我们必须在我们的Java运行环境中拥有dll,而不是在我们的开发环境中:)


3
投票

我通过添加rxtxSerial.dll [jre 1.8.0_45 / bin]和RxTxcomm.jar [jre 1.8.0_45 / lib / ext]解决了这个问题


2
投票

Hy,在Ubuntu 11.10下将RXTXcomm集成到Netbeans时遇到了同样的问题。我猜你没有在正确的地方复制文件,至少这是我的问题。

在Ubuntu下,java安装在usr / lib / jvm下。但是在这里我有很多forders(ex 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,它就像一个魅力。

我希望这有帮助。


2
投票

即使在Java \ jdk \ lib目录中安装RXTXcomm.jar后,我也遇到了同样的问题。根据http://www.jcontrol.org/download/readme_rxtx_en.html上的说明,我找到了rxtxSerial.dll和rxtxParallel.dll文件。将它们放在bin目录中没有帮助,但是将它们与RXTXcomm.jar一起放在lib目录中解决了这个问题。


1
投票

我有同样的问题。所以我安装了32位JDK并将这些RxTx文件(x86)添加到Program files(x86)/ java / ...文件夹而不是Program files / java ...文件夹。我还将这些RxTx .dll文件(x86)添加到/ System32文件夹。之后,我的申请中的问题得到解决。


1
投票

固定:

当你使用IDE这样的Netbeans它有自己的JRE目录时,你是否安装了你的RXTX驱动程序,但是当你在IDE外面运行JAR文件时会出现这个错误...解决方法是在JAVA JRE目录中安装RXTX驱动程序用于运行所有JAR文件。

© www.soinside.com 2019 - 2024. All rights reserved.