2011-07-13 24 views
3

我有一個在Windows 7 64位上運行但在32位版本的JRE上運行的Java應用程序。我需要這個應用程序與串行通信端口進行通信,顯然我需要一點幫助。 :)使用JRE的Windows x64中的Java串行I/O x86

在您建議RXTX之前,我已經嘗試過了,它們都使用32位和64位版本的RXTX DLL。或者是因爲32位JRE無法加載64位DLL,或者是因爲32位DLL給出java.lang.UnsatisfiedLinkError中失敗失敗:

java.lang.UnsatisfiedLinkError: <Path>\cache\bundle1030\version0.0\bundle.jar-lib\0\lib\win32\rxtxSerial.dll: Can't find dependent libraries 
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) 

我假設是因爲32位bit RXTX DLL無法在Windows中找到用於串行通信的32位DLL。

任何線索如何進行?另一個庫?如何彌補32位JRE和64位Windows DLL之間的差距?

+0

對不起,原來在我使用的特定版本的RXTX中存在一個錯誤。用一個DLL替代它(這很難找到)工作。我想你可以在64位Windows中使用Win32 DLL。 – PNielsen

回答

1

有一個驚人的免費工具叫Dependency Walker。它會根據當前PATH精確地告訴你給定的DLL將加載哪些其他DLL,以及哪些DLL無法找到或無法正確加載。它多次保存了我的培根,它應該是在這裏調試你的問題的完美工具。一旦你知道缺少的東西,你可能能夠找到32位版本來安裝 - 或者只是改變你的路徑使其可用。

+0

Dependency Walker是太棒了,是的。沒有遺漏的依賴關係,這幾乎證實了我認爲是問題的原因,不是。謝謝! – PNielsen