1获取字节码对象
java:Class clazz=Utils.class;
//jclass (*FindClass)(JNIEnv*, const char*);//char* 反射调用的类的路径
jni:jclass claz=(*env)->FindClass(env,"反射调用的类的路径");
2获取method的对象
java:Method md=clazz.getDeclareMethod("test",String.class);
//jmethodID GetMethodID(jclass clazz, const char* name, const char* sig)
jni:jmethodID jid=(*env)->GetMethodID(env,claz,"回调的方法","方法签名");//方法签名通过javap -s "类全名"得到(在bin目录下运行)
3通过字节码对象创建一个object
java:Object obj=clazz.newInstance();
jni:clazz就是object
4通过对象调用方法
java:md.invoke(obj,"方法名");
//void (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...);
jni:(*env)->CallVoidMethod(env,clazz,jid);