android JNI 回调函数 env->GetMethodID no method的问题

时间:2021-09-04 18:53:26
jmethodID mid = env->GetMethodID(cls, "methodCallBack", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String)V");
	if (mid == NULL) {
		LOGI("!!!!!!!!!!!NOT FIND!!!!!!!!!!!");
		return; /* method not found */
	}

1.以上是JNI的C++供java使用的接口代码中回调部分。C++指定对应java方法methodCallBack,后面是该方法对应的传参类型,三个String型,最后是返回值,V是void。

2.运行一直报no method,not found的错,对应java却有该方法。

3.几经查找发现, "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String)V",错误在这。String在jni中表示为Ljava/lang/String; 分号不是隔开参数的,而是String类型特带的

4.所以改写成 "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V",问题解决