我在使用JNI共享Java和C之间的流时遇到了问题。我试图从C调用Java方法,但是当我试图获得GetObjectMethodID
时,出现nosuchmethodfound
异常。从C到JNI调用Java方法时出现异常NOSUCHMETHODERROR
C代码:
jclass cls = (*env)->GetObjectClass(env, obj);
jmethodID aMethodID = (*env)->GetMethodID(env, cls, "callbackmethod", "(I)V");
if (aMethodID == 0) {
log("Unable to get methodID"); //Always getting aMethodID as 0
}
int myvar = 7;
(*env)->CallVoidMethod(env, obj, aMethodID, myvar);
Java代码:
public class myclass extends activity {
private void callbackmethod(int i) {
Log.d("Tag", "In Java code");
}
-------
more code
}
现在,我总是得到一个错误Ljava/lang/NoSuchMethodError;: callbackmethod
。
一切看起来不错,但我的代码不起作用。问题是什么?
我是否需要包含任何头文件?这只是我现在可以想到的事情 – 2011-02-03 18:07:48
更新您的C,Java源代码以反映实际的片段,然后解决方案会更快。你是否正确地生成了callabckmethod()的签名? – TheCottonSilk 2011-02-03 18:11:34