DLL INSTANCE = (DLL) Native.loadLibrary(Settings.getSingletonInstance().getProperty("default.ergoPointer.path"), DLL.class);
我將dll路徑存儲在設置文件中。當我走的java.lang.UnsatisfiedLinkError:無法加載庫
Settings.getSingletonInstance().getProperty("default.ergoPointer.path"
這裏輸出:C:\Users\Argenit\Desktop\aaa\dll\ErgoPointer_64_Bit.dll
錯誤部分:
java.lang.UnsatisfiedLinkError: Unable to load library 'C:\Users\Argenit\Desktop\aaa\dll\ErgoPointer_64_Bit.dll': Native library (win32-x86-64/C:\Users\Argenit\Desktop\aaa\dll\ErgoPointer_64_Bit.dll) not found in resource path ([file:/C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/bin/, file:/C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/resources/, file:/C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/lib/fits.jar, file:/C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/lib/json.jar, file:/C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/lib/junit-4.8.2.jar, file:/C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/lib/kdu_jni.jar, file:/C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/lib/log4j-1.2.16.jar, file:/C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/JNA/jna-4.1.0.jar, file:/C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/JNA/jna-platform-4.1.0.jar, file:/C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/lib/ini4j-0.5.4.jar, file:/C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/JNA/, file:/C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/lib/gluegen-rt.jar, file:/C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/lib/jogl.jar])
如果我添加(DLL)的項目和寫一個外部類文件夾:loadLibrary("ErgoPointer_64_Bit")
,它工作在這臺機器,但當我把可運行jar,它不能找到ErgoPointer_64_Bit
所以我想給絕對路徑的dll。但它對我不起作用。
我也試過:
C:\Users\Argenit\Desktop\aaa\dll\ErgoPointer_64_Bit
dll\ErgoPointer_64_Bit
ErgoPointer_64_Bit
dll\ErgoPointer_64_Bit.dll
ErgoPointer_64_Bit.dll
我如何知道計算機名稱(Argenit)在不同的計算機上? – Dauezevy
您可以通過'InetAddress.getLocalHost()。getHostName()'獲取計算機名稱,但實際上Argenit看起來像用戶名而不是主機名。你可以通過'System.getProperty(「user.home」)''獲得用戶的主目錄,或者通過'System.getProperty(「user.name」)'獲取用戶的名字。 – WillShackleford
非常感謝,我發現了錯誤。 os是64位,但java是32位。我導出64位的DLL,所以爲什麼它沒有工作 – Dauezevy