1
我打電話從我的JNI類非靜態函數的時候,但我的比賽變得的NoSuchMethodError調用CallVoidMethod
的NoSuchMethodError
我已經給下面
JNI類
功能void InitializeJni()
{
cocos2d::JniMethodInfo methodInfo;
if (! JniHelper::getStaticMethodInfo(methodInfo, CLASS_NAME, "Start", "()V"))
{
return ;
}
methodInfo.env->CallStaticVoidMethod(methodInfo.classID, methodInfo.methodID);
methodInfo.env->DeleteLocalRef(methodInfo.classID);
}
JNIEXPORT void JNICALL Java_com_games_Game_MyClass_nativeObjectCallBack(JNIEnv *env, jobject obj)
{
jclass cls = env->GetObjectClass(obj);
jmethodID mid = env->GetMethodID(cls, "Init", "()V");
if (mid == 0)
return;
env->CallVoidMethod(obj, mid);
Java類
public static native void nativeObjectCallBack();
public void Init()
{
//my code
}
public static void Start()
{
((CYWGameAndroid)CYWUtil.GetInstance().GetContext()).runOnUiThread(new Runnable()
{
@Override
public void run()
{
nativeObjectCallBack();
}
});
}
誰能告訴我這是爲什麼
這是我的logcat輸出
01-07 16:53:49.987: D/dalvikvm(11832): GetMethodID: method not found: Ljava/lang/Class;.Init:()V
01-07 16:53:52.049: D/AndroidRuntime(11832): Shutting down VM
01-07 16:53:52.049: W/dalvikvm(11832): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0)
01-07 16:53:52.109: E/AndroidRuntime(11832): FATAL EXCEPTION: main
01-07 16:53:52.109: E/AndroidRuntime(11832): java.lang.NoSuchMethodError: Init
01-07 16:53:52.109: E/AndroidRuntime(11832): at com.games.Game.MyClass.nativeObjectCallBack(Native Method)
請你舉一個例子 – glo
@Glinda'methodInfo.classID'不是一個實例參數。好?事實上,我說錯了,它也不是一個類參數。你必須有一個類的實例來初始化。它在哪裏? – EJP
我對此很陌生,不知道如何從jni獲得課程實例 – glo