2

我正在尝试加载一个相应地加载原始 dll 的本机库。但是在另一台运行 XP 32bit 的计算机上,它工作正常。在 win7 64 位系统上执行时将无法加载。在 xp 机器上,dll 文件可能与类文件位于同一目录中,但是为了不出现不满意的链接错误,我不得不将文件复制到 system32 文件夹中。然后它给出了一个错误,指出不能在 64 位进程上加载 32 位 dll。我下载了32位jdk,并在项目中设置jdk加载32位jdk。完成后,我再次收到不满意的链接错误,文件仍在 system32 以及类文件旁边。我很困惑为什么它会在使用 64 位 jdk 时找到库,而在 32 位 jdk 中找不到。

...
static {
    System.loadLibrary("K8055jni");
}

Exception in thread "main" java.lang.UnsatisfiedLinkError: no K8055jni in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
at K8055jni.<clinit>(K8055jni.java:50)
at Test.main(Test.java:4)

如何让 32 位 jdk 找到相同的文件?

4

1 回答 1

1

如果我正确理解您的问题和问题,那么您可以尝试以下任一方法:

  1. Windows 7 将您的 32 位 DLL 放入 \Windows\SysWOW64 而不是 \Windows\System32。奇怪的是,在 Win 7 下,System32 仅适用于 64 位二进制文​​件。有关详细信息,请参阅

  2. 更好的是,将二进制文件放在应用程序文件夹中,并在 java 命令行中指定:

    -Djava.library.path=<path-to-dll-lib>

于 2012-09-06T20:05:59.810 回答