Java loadLibrary()在从64位jdk切换到32位jdk后找不到库

Java loadLibrary()在从64位jdk切换到32位jdk后找不到库,java,dll,jvm,loadlibrary,Java,Dll,Jvm,Loadlibrary,我试图加载一个本机库,该库相应地加载一个原始dll。然而,在另一台运行XP 32位的计算机上,它工作正常。在win7 64位系统上执行时,它将无法加载。在xp机器上,dll文件可能与类文件位于同一目录中,但是为了避免出现不满意的链接错误,我必须将这些文件复制到system32文件夹中。然后它给出了一个错误,指出32位dll不能加载到64位进程上。我下载了32位jdk,并将项目中的jdk设置为加载32位jdk。当这是完整的,我再次得到一个不满意的链接错误,文件仍然在system32以及旁边的类文件

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

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

线程“main”java.lang.UnsatisfiedLinkError中出现异常:java.library.path中没有K8055jni 位于java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860) 位于java.lang.Runtime.loadLibrary0(Runtime.java:845) 位于java.lang.System.loadLibrary(System.java:1084) 在K8055jni。(K8055jni.java:50) at Test.main(Test.java:4)
如何让32位jdk定位相同的文件?

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

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

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

    -Djava.library.path=


  • 您是否尝试将“java.library.path”设置为包含本地目录或system32?谢谢您的帮助。第一个选项在第一次尝试时起作用。有道理为什么它找不到文件。
    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)