0
我在我的Java项目中加载了C++ JNI DLL。它在JDK 1.6上安静地工作,但有一个概率JDK 1.8。 Java 1.8中的C++ JNI DLL加载有没有变化?在Java中加载jni dll时,JDK 1.8 UnsatisfiedLinkError
我附上错误和结果如下。
JDK 1.8控制台:
Exception in thread "main" java.lang.UnsatisfiedLinkError: D:\ws-pidion\PidionSDK\oojnidotnet.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at JavaCallNative.<clinit>(JavaCallNative.java:14)
代码:
File readReturnNativeStringVaueFile;
static {
System.loadLibrary("oojnidotnet");
}
protected void finalize() throws Throwable {
super.finalize();
}
public native boolean connect(String paramString);
相同代码支持JDK 1.6。
感谢。
错误消息表明您的DLL依赖于其他DLL,其中一个找不到。你知道,你的DLL有哪些依赖关系?另请参阅[“如何检查DLL依赖性?”](http://stackoverflow.com/q/7378959/2711488) – Holger
是的,我知道其他DLL的依赖关系。与我的项目相同的目录。我的项目在JDK 1.6中工作。 JDK 1.6和JDK 1.8有什么不同?路径安全? –
因此,该DLL不使用JNI也不使用系统DLL?很难相信* all *所需的库位于相同的目录中。所以仍然有可能存在一个绝对路径或对Java中不存在的库的引用。您应该*检查*而不是相信。 – Holger