8

USB ケーブルを介して XBee 無線と通信する必要がある Java アプリケーションを作成しています。これを行うには、xbee-java API ( http://code.google.com/p/xbeeを使用します) -api/ )

私の古い 32 ビット マシンでは、すべて正常に動作しました。しかし、プロジェクトを 64 ビット マシンにインポートすると、「AMD 64 ビット プラットフォームで IA 32 ビット .dll をロードできません」という例外がすぐにスローされます。この問題を解決する方法がわかりません。

エラーコード:

    java.lang.UnsatisfiedLinkError: C:\Users\Tom\Documents\XbeeJava\rxtxSerial.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform thrown while loading gnu.io.RXTXCommDriver
Closing connection with local XBee
Exception in thread "Thread-1" java.lang.UnsatisfiedLinkError: C:\Users\Tom\Documents\XbeeJava\rxtxSerial.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(Unknown Source)
    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:83)
    at com.rapplogic.xbee.RxTxSerialComm.openSerialPort(RxTxSerialComm.java:71)
    at com.rapplogic.xbee.RxTxSerialComm.openSerialPort(RxTxSerialComm.java:61)
    at com.rapplogic.xbee.api.XBee.open(XBee.java:140)
    at me.server.HardwareCommunications.SensorListener.run(SensorListener.java:47)
    at java.lang.Thread.run(Unknown Source)

ありがとう、トム

4

5 に答える 5

9

32ビットDLLを64ビットプロセスにロードすることはできません。

説明に基づくと、実行しているJVMは64ビットですが、DLLrxtxSerial.dllは32ビットです。解決するには、次のいずれかを行います。

  • 64ビットを取得するrxtxSerial.dll、または
  • 現在の32ビットJVMをインストールして使用するrxtxSerial.dll
于 2012-02-21T14:18:55.977 に答える
6

64ビットの実行可能ファイル(およびプロセス)(Java VM)は、64ビットのDLLのみを使用できます。

ただし、32ビットバージョンのJavaをダウンロード、インストール、および実行することはできます。64ビットDLLにもアクセスする必要がある場合、または2〜3 GBを超えるメモリが必要な場合を除いて、32ビットJavaVMは64ビットマシンで正常に動作します。

于 2012-02-21T14:19:15.457 に答える
5

rxtx の 64 ビット DLL は、 http ://www.cloudhopper.com/opensource/rxtx/ から入手できます。

于 2012-02-21T14:31:05.530 に答える
1

XBeeライブラリは、DLLに埋め込まれたネイティブコードを呼び出すためにJNIに依存しているようです。

このDLLを64ビットJava仮想マシン内でリンクすることはできません。これは正常なことです。

したがって、次のいずれかが必要になります。-ソースコードにアクセスできる場合は、XBeeを再コンパイルします。-APIの64ビットディストリビューションを取得するには

Java32ビットVMを使用してコードを実行します。

于 2012-02-21T14:20:19.720 に答える
1

https://github.com/NeuronRobotics/nrjavaserial を確認してください

jar 内にいくつかのネイティブ ライブラリ (windows、linux、mac、32 および 64) が含まれており、それらを自動的にロードするため、JVM にそれらの場所を伝えることを忘れてしまいます

于 2015-11-23T10:37:20.100 に答える