java_vm_ext.cc:534] JNI DETECTED ERROR IN APPLICATION: can't call void com.jnidemo.NativeInterface.onConnectionStateChanged(int, int) on instance of java.lang.Class
jni 中无法回调某个 java 方法;
因为使用了错误的 jobject 对象来回调 java 中的方法;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// java public native static void initNative(); public void stateCallback(){ } // C 中 static JNIEnv *sCallbackEnv = NULL; static jobject mCallbacksObj = NULL; // 第二个参数应是 jclass, 虽不报错但使用这个 object 会报错 void initNative(JNIEnv *env, jobject object){ sCallbackEnv = env; mCallbacksObj = object;// 使用 mCallbacksObj 时会报错 } |
补充: native 方法是静态的, 对应的 C 代码中第二个参数是 jclass, native 非静态, 对应第二个参数 jobject
0 Comments