web-dev-qa-db-ja.com

java.lang.UnsatisfiedLinkError:gnu.io.RXTXCommDriverのロード中にJava.library.pathにrxtxSerialがスローされません

現在使用している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

8
user285594

問題は、複数の-Djava.library.pathパラメータがあり、2番目のパラメータが最初のパラメータの値を上書きしていることだと思います。値は、ライブラリ名を含まず、ライブラリを含むフォルダへのパスでもある必要があります。

Linuxシステムでは、コロンを区切り文字として使用して、両方のパスパラメータを組み合わせることができるはずです。

-Djava.library.path=/usr/lib/rxtx:/usr/lib/jni
6
Jörn Horstmann

リポジトリからインストールされたv4l4jライブラリでも同じ問題が発生しました。 ununtuでは、netbeansプロジェクトはIDEから開始できませんでしたが、jarとしては正常に機能しました。

* .soファイルを/usr/libフォルダーではなく/usr/lib/jniに配置することで解決しました。

3
Zon

プロジェクト->プロパティ-> Javaビルドパス->。jarを検索します。+をクリックしてJARのプロパティを開きます。ネイティブライブラリの場所を選択し、RXTXの共有ライブラリ(.DLL)を指すように編集します。 、.so、.dylib)。

1
Paulo Gurgel
Copy RXTXcomm.jar ---> <Java_HOME>\jre\lib\ext

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

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

0
Hans Pour

Linuxでも同じ問題が発生しました。それを修正するための鍵は

  1. コロン「:」を使用してJava.library.path要素を区切ります
  2. ディレクトリ区切り文字にスラッシュを使用する

私たちの場合、このような相対パスを使用しました

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

パスはスタートアップパスを基準にしています。例えば。 netbeansから実行する場合、起動ディレクトリはプロジェクトディレクトリです。

0
tobi delbruck