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