2012-02-21 31 views
6

私は、私は私の古い上のXBee-JavaのAPI(http://code.google.com/p/xbee-api/64ビットマシン上で32ビット用に作成されたAPIを実行するにはどうすればよいですか?

を使用してこれを行うusb-cable.To以上のXBee無線機と通信していると通信しているJavaアプリケーションを書いている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) 

おかげで、トム

答えて

7

64ビットプロセスに32ビットのDLLをロードすることは不可能です。

説明に基づいて、実行しているJVMは64ビットですが、DLL は32ビットです。どちらか、解決するには:

  • は、64ビットrxtxSerial.dll、または
  • 現在rxtxSerial.dll
6

と64ビットの実行可能ファイル(およびプロセス)(あなたのJavaの32ビットのJVMをインストールして使用を入手しますVM)は、64ビットDLLのみを使用できます。

しかし、Javaの32ビット版をダウンロードし、インストールして実行することができます。 64ビットDLLにアクセスする必要がある場合や、2〜3 GB以上のメモリが必要な場合を除き、32ビットJava VMは64ビットマシンで正常に動作します。

1

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

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

- ソースコードにアクセスできない場合は、XBeeを再コンパイルします。 - APIの64Bitディストリビューションを取得する

コードを実行するためにJava 32Bit VMを使用してください。

5

あなたはここにRXTXのための64ビットDLL取得することができます:それは瓶内部のいくつかのネイティブライブラリ(WindowsやLinux、MAC、32および64)を含み、それらを自動的にロードし http://www.cloudhopper.com/opensource/rxtx/

+0

非常に助かりました、ありがとう! – Don

関連する問題