Gewusst wie: ausführen einer API gemacht für 32-bit-auf eine 64-bit-Maschine?
Ich Schreibe eine java-Anwendung zu kommunizieren, hat zur Kommunikation mit einem XBee radio über ein usb-Kabel.Um dies zu tun , benutze ich das xbee-java-API (http://code.google.com/p/xbee-api/)
Auf meinem alten 32-bit-Maschine, alles funktioniert einwandfrei .
Aber wenn ich das importierte Projekt auf einem 64-bit-Maschine , es wirft sofort eine Ausnahme, die sagt :" Can ' T load IA 32-bit .dll on a AMD 64-bit platform" .
Ich habe keine Ahnung, wie ich dieses problem lösen .
den Fehler-code :
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)
Dank , Tom
InformationsquelleAutor tb96 | 2012-02-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht möglich, laden Sie eine 32-bit-DLL in einer 64-bit-Prozess.
Basiert auf der Beschreibung der JVM ausgeführt werden, ist 64-bit aber die DLL
rxtxSerial.dll
ist 32-bit. Um dies zu beheben, entweder:rxtxSerial.dll
oderrxtxSerial.dll
InformationsquelleAutor hmjd
Einem 64-bit-executable (und Verfahren), die (Ihre Java-VM) kann nur 64 bit DLLs.
Aber Sie können herunterladen, installieren und führen Sie eine 32-bit-version von Java. Es sei denn, Sie müssen auch Zugriff auf 64-bit-DLLs oder benötigen Sie mehr als 2-3 GB Arbeitsspeicher, die 32-bit-Java-VM laufen problemlos auf einem 64-bit-Computer.
InformationsquelleAutor Codo
Können Sie die 64-bit-dlls für rxtx hier:
http://www.cloudhopper.com/opensource/rxtx/
InformationsquelleAutor Jeffrey Kendall
Es scheint, dass Ihre XBee Bibliothek setzt auf JNI-aufrufen einige native-code in eine DLL eingebettet.
können Sie einen link auf diese DLL in einer 64-bit Java Virtual Machine, und das ist normal.
Also musst du entweder:
- kompilieren, XBee, wenn Sie Zugriff auf den Quellcode.
- um eine 64Bit distribution der API -
Verwendung eines Java-32Bit VM zum ausführen von code.
InformationsquelleAutor dweeves
Überprüfen https://github.com/NeuronRobotics/nrjavaserial
Enthält verschiedene native Bibliotheken innerhalb der jar-Datei (windows, linux, mac, 32 und 64) und laden Sie Sie automatisch, so dass Sie vergessen zu sagen, JVM, wo Sie zu finden
InformationsquelleAutor user3624175