我在使用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