我有一个在Windows 7 64位上运行的Java应用程序,但运行在32位版本的JRE上。我需要这个应用程序与串行COM端口进行通信,显然我需要一些帮助。 :)
在你建议使用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位RXTX DLL在Windows中找不到用于串行通信的32位DLL。
有关如何进行的任何线索?另一个库?如何弥合32位JRE和64位Windows DLL之间的差距?
答案 0 :(得分:1)
有一个名为Dependency Walker的惊人免费工具。它会根据当前PATH精确地告诉您给定DLL将加载哪些其他DLL,以及哪些DLL无法找到,或者无法正确加载。它已经多次保存了我的培根,它应该是在这里调试问题的完美工具。一旦你知道缺少什么,你就可以找到要安装的32位版本 - 或者只是改变你的路径使它们可用。