如何在64位计算机上运行32位API?

tb9*_*b96 7 java usb 64-bit 32bit-64bit xbee

我正在编写一个必须与之通信的java应用程序,必须通过usb-cable与XBee无线电进行通信.为此,我使用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)
Run Code Online (Sandbox Code Playgroud)

谢谢,汤姆

hmj*_*mjd 8

无法将32位DLL加载到64位进程中.

根据描述,您运行的JVM是64位,但DLL rxtxSerial.dll是32位.要解决,要么:

  • 获得64位rxtxSerial.dll,或
  • 使用当前安装和使用32位JVM rxtxSerial.dll


Cod*_*odo 6

64位可执行文件(和进程)(您的Java VM)只能使用64位DLL.

但是您可以下载,安装和运行32位版本的Java.除非您还需要访问64位DLL或需要超过2到3 GB的内存,否则32位Java VM将在64位计算机上正常运行.


小智 5

你可以在这里获得rxtx的64位dll:http://www.cloudhopper.com/opensource/rxtx/