0
자바 프로젝트에 C++ JNI DLL을로드합니다. JDK 1.6에서는 조용하게 작동하지만 probelm JDK 1.8이 있습니다. Java 1.8에서 C++ JNI DLL 로딩에 변화가 있습니까?자바로드 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을 사용하고 있지 않습니까? 모든 필수 라이브러리가 같은 디렉토리에 있다고 생각하기는 어렵습니다. 따라서 Java 8이 존재하지 않는 라이브러리에 대한 절대 경로 또는 참조가 여전히 가능할 수 있습니다. 믿지 말고 * 확인해야합니다. – Holger