[英]java.lang.UnsatisfiedLinkError: Unable to load library
DLL INSTANCE = (DLL) Native.loadLibrary(Settings.getSingletonInstance().getProperty("default.ergoPointer.path"), DLL.class);
I store the dll path in settings file. 我将dll路径存储在设置文件中。 When i take output of
当我输出
Settings.getSingletonInstance().getProperty("default.ergoPointer.path"
here : C:\\Users\\Argenit\\Desktop\\aaa\\dll\\ErgoPointer_64_Bit.dll
此处:
C:\\Users\\Argenit\\Desktop\\aaa\\dll\\ErgoPointer_64_Bit.dll
Error part : 错误部分:
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_J
java.lang.UnsatisfiedLinkError:无法加载库'C:\\ Users \\ Argenit \\ Desktop \\ aaa \\ dll \\ ErgoPointer_64_Bit.dll':本机库(win32-x86-64 / C:\\ Users \\ Argenit \\ Desktop \\ aaa \\ dll \\ ErgoPointer_64_Bit.dll)在资源路径([file:/ C:/ Users / Argenit / Desktop / Pathology_JAVA / Digital_Pathology / bin /,file:/ C:/ Users / Argenit / Desktop / Pathology_JAVA / Digital_Pathology / resources /,文件:/ C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/lib/fits.jar,文件:/ C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/lib/json.jar,文件:/ C:/ Users / Argenit / Desktop / Pathology_JAVA / Digital_Pathology / lib / junit-4.8.2.jar,文件:/ C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/lib/kdu_jni.jar,文件:/ C:/ Users / Argenit / Desktop / Pathology_JAVA / Digital_Pathology / lib / log4j-1.2.16.jar,文件:/ C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/JNA/jna-4.1.0.jar,文件:/ C:/ Users / Argenit / Desktop / Pathology_JAVA / Digital_Pathology / JNA / jna-platform-4.1.0.jar,文件:/ C:/ Users / Argenit / Desktop / Pathology_J AVA/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])
AVA / Digital_Pathology / lib / ini4j-0.5.4.jar,文件:/ C:/ Users / Argenit / Desktop / Pathology_JAVA / Digital_Pathology / JNA /,文件:/ C:/ Users / Argenit / Desktop / Pathology_JAVA / Digital_Pathology / lib /gluegen-rt.jar,文件:/ C:/Users/Argenit/Desktop/Pathology_JAVA/Digital_Pathology/lib/jogl.jar])
If i add (dll) as a external class folder in project and write : loadLibrary("ErgoPointer_64_Bit")
, it works in this machine but when i take the runnable jar, it couldn' t find ErgoPointer_64_Bit
so i want to give absolute path of dll. 如果我将(dll)添加为项目中的外部类文件夹并编写:
loadLibrary("ErgoPointer_64_Bit")
,则可以在此计算机上运行,但是当我使用可运行的jar时,找不到ErgoPointer_64_Bit
因此我想给出绝对路径DLL。 But it doesn' t work for me. 但这对我不起作用。
I also tried : 我也尝试过:
C:\\Users\\Argenit\\Desktop\\aaa\\dll\\ErgoPointer_64_Bit
C:\\用户\\ Argenit \\桌面\\ AAA \\ DLL \\ ErgoPointer_64_Bit
dll\\ErgoPointer_64_Bit
DLL \\ ErgoPointer_64_Bit
ErgoPointer_64_Bit
ErgoPointer_64_Bit
dll\\ErgoPointer_64_Bit.dll
DLL \\ ErgoPointer_64_Bit.dll
ErgoPointer_64_Bit.dll
ErgoPointer_64_Bit.dll
Set the system property java.library.path before the call Native.loadLibrary() with just the base name. 仅使用基本名称在调用Native.loadLibrary()之前设置系统属性java.library.path。
System.setProperty("java.library.path",
"C:\\Users\\Argenit\\Desktop\\aaa\\dll;"
+ System.getProperty("java.library.path"));
DLL INSTANCE = (DLL) Native.loadLibrary("ErgoPointer_64_Bit", DLL.class);
You can also set the java.library.path on the command line. 您也可以在命令行上设置java.library.path。 eg.
例如。
java "-Djava.library.path=C:\Users\Argenit\Desktop\aaa\dll\" -jar somejar.jar
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.