簡體   English   中英

從64位jdk切換到32位后,Java loadLibrary()無法找到庫

[英]Java loadLibrary() cannot locate library after switching from 64 bit jdk to 32 bit

我正在嘗試加載本機庫,因此會加載原始dll。 但是在另一台運行XP 32位的計算機上,它可以正常工作。 在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來定位相同的文件?

如果我正確理解了您的問題,那么您可以嘗試以下任一方法:

  1. Windows 7將您的32位DLL放入\\ Windows \\ SysWOW64而不是\\ Windows \\ System32。 奇怪的是,在Win 7下,System32僅適用於64位二進制文​​件。 這個這個有關詳細信息。

  2. 更好的是,將二進制文件放在應用程序文件夾中,並在java命令行上指定:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM