2016-12-07 5 views
0

Ich laden C++ JNI DLL auf meinem Java-Projekt. Es funktioniert ruhig gut auf JDK 1.6, aber es gibt ein Problem JDK 1.8. Gibt es Änderungen in C++ JNI DLL Laden in Java 1.8?Wenn in Java laden JNI DLL, JDK 1.8 UnzufriedeneLinkError

Ich habe Fehler und Ergebnis unten angehängt.

JDK 1.8 Console:

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) 

Codes:

File readReturnNativeStringVaueFile; 

static { 
    System.loadLibrary("oojnidotnet"); 
} 

protected void finalize() throws Throwable { 
    super.finalize(); 
} 

public native boolean connect(String paramString); 

Gleiche Codes arbeiten mit JDK 1.6.

Danke.

+0

Die Fehlermeldung schlägt vor, dass Ihre DLL von anderen DLLs abhängt, von denen eine nicht gefunden werden konnte. Weißt du, welche Abhängigkeiten deine DLL hat? Siehe auch ["So überprüfen Sie die DLL-Abhängigkeit?"] (Http://stackoverflow.com/q/7378959/2711488) – Holger

+0

Ja, ich kenne Abhängigkeiten andere DLL. Und dasselbe Verzeichnis mit meinem Projekt. Meine Projektarbeit in JDK 1.6. Was unterscheidet JDK 1.6 und JDK 1.8? Sicherheit für den Weg? –

+0

Also verwendet die DLL nicht JNI noch System-DLLs? Es ist schwer zu glauben, dass * alle * erforderlichen Bibliotheken im selben Verzeichnis sind. Es ist also immer noch möglich, dass es einen absoluten Pfad oder einen Verweis auf eine Bibliothek gibt, die nicht unter Java 8 existiert. Sie sollten * überprüfen * statt zu glauben. – Holger

Antwort

0

Ich löste dieses Problem mit user2543253s hilft.

Für JDK 1.8:

  • Need 2 DLL Lib (C: \ Program Files (x86) \ Java \ jdk1.6.0_45 \ jre \ bin \ plugin2) (2 DLL-Bibliotheken zu Projekt kopieren Pfad.)

    System.loadLibrary("msvcr71"); 
    System.loadLibrary("npjp2"); 
    
    System.loadLibrary("oojnidotnet"); 
    

Es funktioniert auf diese Weise in 1.8.

Danke.

Verwandte Themen