我想從這樣的本機實現另一種方法中調用的私有方法:JNI:獲得方法ID爲私有方法在超
jclass cls = (*env)->GetObjectClass(env, obj);
jmethodID output_mid = (*env)->GetMethodID(env, cls, "methodName", "(Ljava/lang/String;)V");
if (output_mid == 0)
{
// Exit
}
這是給我一個「方法找不到」異常。從我所收集的內容來看,類對象必須對應於定義目標方法的類,因爲它是私有的。
事實上,如果我將訪問修飾符更改爲受保護,故障消失。同樣從日誌中,我看到GetObjectClass返回了運行時類,而不是基類。所以,我的問題是:如何在JNI中獲得正確的基類?
當您的本機代碼返回到Java後,您應該會收到一個異常。你能發佈異常嗎? – Java42 2012-03-11 19:42:28
不是一句一句,因爲我不得不重新引入這個我懶惰做的bug,但我認爲它是MethodNotFoundException的一個實例,說'methodName'不存在。謝謝。 – 2012-03-11 20:30:00
@PanayiotisKarabassis出於好奇,從私人到保護的單一變化解決您的問題? – jogabonito 2012-03-12 06:01:39