2023-01-20 300
我需要在JNI代码中实现的异常处理.我不擅长JNI,找不到任何很好的例子.因此,请为此提供完整的示例.
这就是我正在做的:
jint JNI_OnLoad(JavaVM* vm, void* reserved) {
jint result = -1;
g_JavaVM = vm;
if (vm->GetEnv((void **) &envLocal, JNI_VERSION_1_6) != JNI_OK) {
return -1;
}
jclass clazz;
**clazz = envLocal->FindClass("com/graphics/myclass/MyClass");**
if (clazz == NULL)
__android_log_print(ANDROID_LOG_ERROR, "MyClass",
"clazz value is null");
g_clazz = (jclass) envLocal->NewGlobalRef(clazz);
// STEP 3/3 : Delete the no longer needed local reference
envLocal->DeleteLocalRef(clazz);
result = JNI_VERSION_1_6;
return result;
}
现在,我有需要的地方,如果此myClass不可用(因为应用程序开发人员没有相应的JAR文件),那么,不应有任何应用程序崩溃.
使用system.loadlibrary(” libmyClass.so”)和此” com/graphics/myclass/myclass”类加载库时,将调用JNI_ONLOAD.
当前,如果此jar不包含在应用程序中,则导致应用程序崩溃,以下异常
F/art (14708): sart/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: JNI NewGlobalRef called with pending exception 'java.lang.ClassNotFoundException' thrown in unknown throw location
F/art (14708): sart/runtime/check_jni.cc:65] in call to NewGlobalRef
F/art (14708): sart/runtime/check_jni.cc:65] from java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.String)
F/art (14708): sart/runtime/check_jni.cc:65] "main" prio=5 tid=1 Runnable
我需要的是Android在某个地方处理的异常,应该在JNI_ONLOAD中处理它,以免应用程序崩溃.我不希望Java的例外处理.
所以我的想法是,如果我被” clazz = envlocal-> findClass(” com/graphics/systemop/systemop”)抓住了异常,”;此后在JNI_ONLOAD中处理.
有人可以建议一个示例(完成一个),因为我无法实施它.请使用完整的源代码.问我是否需要更多信息.
您可以在执行可能投掷的JNI操作后调用以下代码:
bool checkExc(JNIEnv* env) {
if(env->ExceptionCheck()) {
env->ExceptionDescribe(); // writes to logcat
env->ExceptionClear();
return true;
}
return false;
}
以上所述是小编给大家介绍的安卓JNI异常处理,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26112.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态