Я загружаю C++ JNI DLL в свой проект Java. Он работает спокойно на JDK 1.6, но есть пробник JDK 1.8. Есть ли какие-либо изменения в загрузке C++ JNI DLL в Java 1.8?Когда в 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? Трудно поверить, что * все * необходимые библиотеки находятся в одном каталоге. Таким образом, все еще возможно, что существует абсолютный путь или ссылка на библиотеку, которая не существует unter Java 8. Вы должны * проверить *, а не полагать. – Holger