3

我有一个在 64 位 Windows 7 上运行的 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 之间的差距?

4

1 回答 1

1

有一个很棒的免费工具,叫做Dependency Walker。它准确地告诉您给定 DLL 将根据当前 PATH 加载哪些其他 DLL,以及哪些无法找到或无法正确加载。它已经救了我很多次了,它应该是在这里调试你的问题的完美工具。一旦您知道缺少什么,您就可以找到要安装的 32 位版本——或者也许只是改变您的路径以使它们可用。

于 2011-07-13T11:09:34.713 回答