当In Java加载jni dll时,JDK 1.8 UnsatisfiedLinkError

时间:2016-12-07 06:25:42

标签: java dll java-8 java-native-interface jdk1.6

我在我的Java项目上加载C ++ JNI DLL。它在JDK 1.6上运行得非常好,但是有一个问题JDK 1.8。 Java 1.8中的C ++ JNI DLL加载有什么变化吗?

我在下面附上了错误和结果。

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。

感谢。

1 个答案:

答案 0 :(得分:1)

我用user2543253s解决了这个问题。

对于JDK 1.8:

  • 需要2个DLL Lib(C:\ Program Files(x86)\ Java \ jdk1.6.0_45 \ jre \ bin \ plugin2) (2个DLL库复制到项目路径。)

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

它在1.8中以这种方式工作。

感谢。