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