web-dev-qa-db-ja.com

java.lang.UnsatisfiedLinkError:Java.library.pathにrxtxSerialがありません

64ビットWindows 7およびEclipseで64ビットrxtxシリアル通信ライブラリ(cloudhopperからダウンロード)を使用しようとしています。メッセージが表示されます:Java.lang.UnsatisfiedLinkError: no rxtxSerial in Java.library.path。 dllは/jre/lib dirおよびWindows/System32RXTXcomm.jarは、Eclipseのビルドパスとjre/lib/ext dir。バックグラウンドでプロセスモニターを実行したところ、RXTXcomm.jarrxtxSerial.dll、およびrxtxParallel.dllはすべて検出され、開かれているので、この問題が発生している理由がわかりません。

助言がありますか。

18
sldahlin

プロジェクト->プロパティ-> Java build path-> Find your .jar.Find your .jar.Find to + .jar to the JAR's property。Open。​​Native library location。 .DLL、.so、.dylib)。

19
Paulo Gurgel

Ubuntuのリポジトリからlibrxtx-Javaパッケージをインストールできます。

7
GowhamanB

仮想マシンの引数を追加することもできます:

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

または

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

それは私のために働いた。これも参照してください question

7

Windowsユーザー:私の問題は、実際にrxtxSerial.dllおよびrxtxParallel.dllファイルが誤ったディレクトリにある。

私の場合、パスは[...]/jre7/bin /ではなく[...]/jdk1.7.0_09/bin /にありましたが、 Javaのバージョンによって異なります。

結局のところ、JARをIDEの外で実行したい場合、開発環境ではなく、Java実行環境:)にDLLが必要です。

4
aviggiano

RxtxSerial.dll [jre 1.8.0_45/bin]およびRxTxcomm.jar [jre 1.8.0_45/lib/ext]を追加することにより、この問題を解決します

3
A.P.Code

こんにちは、RXTXcommをUbuntu 11.10でNetbeansに統合するときに同じ問題がありました。私はあなたが正しい場所にファイルをコピーしていないと推測しています、少なくともそれは私の問題でした。

Ubuntuの下でJavaはusr/lib/jvmの下にインストールされます。しかし、ここでは多くのfordersがありました(exJava-7-openjdk-i386Java-7-commonJava-6-openjdk...)。Netbeansでは、プロジェクトに含まれるJDKのパスを確認しましたが、それはJava-7-openjdk-i386。だから私はrxtxSerial.so(WindowsではrxtxSerial.dllです)をJava-7-openjdk-i386/jre/binそしてそれは魅力のように働いた。

これがお役に立てば幸いです。

2
Borissow

RXTXcomm.jarをJava\jdk\libディレクトリにインストールした後でも、同じ問題が発生していました。 http://www.jcontrol.org/download/readme_rxtx_en.html の指示に基づいて、rxtxSerial.dllおよびrxtxParallel.dllファイルを見つけました。それらをbinディレクトリに配置しても解決しませんでしたが、RXTXcomm.jarとともにlibディレクトリに配置すると問題は解決しました。

2
mkstlwtz

同じ問題がありました。そこで、JDK 32ビットをインストールし、それらのRxTxファイル(x86)をProgram files(x86)/ Java /...フォルダーではなくProgram files/Java ...フォルダー。また、RxTx.dllファイル(x86)を/ System32フォルダーに追加しました。その後、アプリケーションで問題が解決しました。

1
Alias Neo

修正:

IDEなどのNetbeansを使用する場合、JRE専用のディレクトリがあります。RXTXドライバーをインストールした可能性がありますが、JARファイルをIDE thisエラーが発生します... 解決策は、RXTXドライバーをJavaすべてのJARファイルの実行に使用するJREディレクトリー内にもインストールします。

1
user1477929

Windows上のNetbeans 5.5では、画面の左側にある「プロジェクト」の下の「ライブラリ」を右クリックし、「JAR /フォルダーを追加」を選択してRXTXcomm.jarファイルを選択する必要がありました。それから初めて

enter code here

有効なコマンドになります。また、rxtxSerial.DLLライブラリが見つからなかったため、ロードに失敗したというランタイムエラーが発生しました。プロジェクト名を右クリックしてプロパティを選択し、カテゴリの下で実行を選択して、VMオプション:

-Djava.library.path = "C:\ where-ever-you-stuck-rxtxSerial.DLL-file;%PATH%

例:

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

ディレクトリをパスに追加する方法は複数あると確信していますが、これはうまくいきました。注:デフォルトのNetBeans 5.5/JDK 1.6.0はすべてのデフォルトオプションを受け入れない(つまり、終了するまで[次へ]をクリックする)ため、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.*"

from http://rxtx.qbang.org/wiki/index.php/Using_RXTX_In_NetBeans

0
Ferhat KOÇER

私は同じ問題を抱えていました、Windows 10とEclipseでは、problmには32ビットと64ビットのJavaがあったため、64ビットのRXTXライブラリをインストールしましたが、Eclipseは32ビットJava環境、だから私は32ビットのRXTXをダウンロードして、RXTXの指示に従って必要なファイルをC:ProgramFilesx86/Java_HOMEにコピーし、問題を解決しました。これが誰にも役立つことを願っています。

0
cesar

同じ問題がありました。 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)
0