java.lang.UnsatisfiedLinkError:加载gnu.io.RXTXCommDriver时抛出的java.library.path中没有rxtxSerial

时间:2012-05-25 08:50:12

标签: java fedora rxtx

立即使用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

CORRECT

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

5 个答案:

答案 0 :(得分:7)

我猜问题是你有多个-Djava.library.path参数,第二个是覆盖第一个参数的值。该值也应该是包含库的文件夹的路径,不包括库名。

在linux系统上,您应该能够使用冒号作为分隔符来组合两个路径参数:

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

答案 1 :(得分:3)

从存储库安装的v4l4j库存在同样的问题。在ununtu中,netbeans项目无法从IDE启动,但在jar中运行良好。

通过将* .so文件放到/usr/lib而不是/usr/lib/jni文件夹来解决。

答案 2 :(得分:1)

我们在linux上遇到了同样的问题。 我们解决这个问题的关键是

  1. 使用冒号“:”分隔java.library.path元素
  2. 对目录分隔符使用正斜杠
  3. 在我们的例子中,我们使用了像这样的相对路径

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

    路径相对于启动路径。例如。从netbeans运行时,启动目录是项目目录。

答案 3 :(得分:1)

项目 - &gt;属性 - &gt; Java构建路径 - &gt;找到你的.jar。 单击+打开JAR的属性。 选择Native library location并编辑它以指向RXTX的共享库(.DLL,.so,.dylib)。

答案 4 :(得分:0)

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

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

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