java JNI error java.lang.UnsatisfiedLinkError:

时间:2010-12-24 12:02:03

标签: java-native-interface

java -Djava.library.path=. TestJNI
>>>>

Exception in thread "main" java.lang.UnsatisfiedLinkError: TestJNI.calibrate([D[DII)[D
 at TestJNI.calibrate(Native Method)
 at TestJNI.main(TestJNI.java:61)

我知道库正在加载,否则错误说无法找到校准库。 上述错误意味着什么?

修改

这是我的实施 -

JNIEXPORT jdoubleArray JNICALL Java_TestJNI_cailbrate (JNIEnv * env, jobject jobj, jdoubleArray rtt, jdoubleArray distance ,jint activecount,jint passivecount) {
jdoubleArray jresult = (*env)->NewDoubleArray(env,3);
 .......
return jresult;
}

是正确声明的参数吗?

2 个答案:

答案 0 :(得分:7)

此消息表示Java正在寻找类似于Java方法的本机方法

double[] calibrate(double[], double[], int, int)

如果您已正确生成头文件并构建库,这很可能意味着您缺少该方法的实现。

有些事情会浮现在脑海中:

  • 实施方法后,您是否重建了库?
  • 在构建库之后,您是否碰巧更改了Java方法的界面?

答案 1 :(得分:1)

此隐藏错误的另一个原因是导入错误的<jni.h>文件时。例如,如果您正在针对x86进行编译,但将includes路径指向标题的x64风格。