java.lang.UnsatisfiedLinkError:无法加载库 [英] java.lang.UnsatisfiedLinkError: Unable to load library
问题描述
我将dll路径存储在设置文件中。当我输出
Settings.getSingletonInstance()。getProperty(default.ergoPointer.path
这里: C:\Users\Argenit\Desktop\aaa\dll\ ErgoPointer_64_Bit.dll
错误部分:
java.lang.UnsatisfiedLinkError:无法加载库
'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)
在资源路径中找不到
([file:/ C:/用户/ Argenit / Desktop / Pathology_JAVA / Digital_Pathology / bin /,
文件:/ 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:/ Use rs / 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_JAVA / 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])
如果我将(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
在调用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);
您还可以在命令行中设置java.library.path。例如。
java-Djava.library.path = C:\Users\Argenit\Desktop\aaa\\ \\ dll\-jar somejar.jar
DLL INSTANCE = (DLL) Native.loadLibrary(Settings.getSingletonInstance().getProperty("default.ergoPointer.path"), DLL.class);
I store the dll path in settings file. When i take output of
Settings.getSingletonInstance().getProperty("default.ergoPointer.path"
here : 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_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])
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. But it doesn' t work for me.
I also tried :
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
Set the system property java.library.path before the call Native.loadLibrary() with just the base name.
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. eg.
java "-Djava.library.path=C:\Users\Argenit\Desktop\aaa\dll\" -jar somejar.jar
这篇关于java.lang.UnsatisfiedLinkError:无法加载库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!