Java Android JNI错误:带有布尔参数的调用函数导致崩溃
我试图调用这个Java Android JNI错误:带有布尔参数的调用函数导致崩溃,java,android,c++,android-ndk,java-native-interface,Java,Android,C++,Android Ndk,Java Native Interface,我试图调用这个JAVA函数: public String getPreferredLanguage(boolean withRegion) 使用JNIGetMethodID,但我总是遇到崩溃,我在JNI部分尝试了很多关于函数签名的变体,但似乎没有任何帮助 JNI代码: methodID getPreferredLanguageMethod = env->GetMethodID(languageServiceClass, "getPreferredLanguage", "(Ljava/la
JAVA
函数:
public String getPreferredLanguage(boolean withRegion)
使用JNI
GetMethodID
,但我总是遇到崩溃,我在JNI
部分尝试了很多关于函数签名的变体,但似乎没有任何帮助
JNI
代码:
methodID getPreferredLanguageMethod = env->GetMethodID(languageServiceClass, "getPreferredLanguage", "(Ljava/lang/Boolean;Z)Ljava/lang/String;");
if (!getPreferredLanguageMethod) {
TTLOGD("LanguageService::getPreferredLanguage: ERROR getPreferredLanguageMethod is null\n");
}
崩溃消息:
JNI DETECTED ERROR IN APPLICATION: JNI CallObjectMethodV called with pending exception java.lang.NoSuchMethodError: no non-static method "Lcom/tabtale/mobile/acs/services/LanguageService;.getPreferredLanguage(Ljava/lang/Boolean;Z)Ljava/lang/String;"
知道我做错了什么吗?在反复阅读文档之后,我发现了我的问题,这就是JNI
函数应该是什么:
jmethodID getPreferredLanguageMethod = env->GetMethodID(languageServiceClass, "getPreferredLanguage", "(Z)Ljava/lang/String;");
在生成错误的调用抛出Java异常(在Java端)之前,您对Java的一次调用。在进行任何JNI方法调用之前,您需要允许处理(或自己处理)这个Java异常。请参阅中的Java异常部分:不要试图自己解决这些问题
javap-s
将100%准确地告诉您。@EJP您在上运行javap
什么?什么目录?@IgorGanapolsky从它的人那里,javap[options]class…
sojavap-s ClassContainingRelevantMethod.class