java – 应用程序中的Android JNI DETECTED ERROR:JNI GetMethodID被调用挂起异常
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 应用程序中的Android JNI DETECTED ERROR:JNI GetMethodID被调用挂起异常,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3056字,纯文字阅读大概需要5分钟。
内容图文
![java – 应用程序中的Android JNI DETECTED ERROR:JNI GetMethodID被调用挂起异常](/upload/InfoBanner/zyjiaocheng/750/0b390a48b69f4bacaa8196c4103b7269.jpg)
我正在尝试使用我的android项目运行Googles OCR Tesseract.我已经用android-ndk编写了tesseract,并在我尝试运行android项目后收到此错误.
我的环境如下
> Android 5.1.1
> android-ndk-r10e for windows
> android-sdk-r22
作为参考,我正在建立一个在这里列出的例子Example Link
提前致谢!
这是我的logcat结果的片段:
I/DEBUG ( 182): Revision: '0'
I/DEBUG ( 182): ABI: 'arm'
I/DEBUG ( 182): pid: 20291, tid: 20337, name: JavaBridge >>> com.enterprisem
obility.OCR <<<
I/DEBUG ( 182): signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
I/DEBUG ( 182): Abort message: 'art/runtime/check_jni.cc:65] JNI DETECTED ERR
OR IN APPLICATION: JNI GetMethodID called with pending exception 'java.lang.NoSu
chFieldError' thrown in void com.googlecode.tesseract.android.TessBaseAPI.native
ClassInit():-2'
I/DEBUG ( 182): r0 00000000 r1 00004f71 r2 00000006 r3 00000000
I/DEBUG ( 182): r4 a0701db8 r5 00000006 r6 0000000b r7 0000010c
I/DEBUG ( 182): r8 00000000 r9 b486f520 sl a1c0ac00 fp 00000001
I/DEBUG ( 182): ip 00004f71 sp a07006d8 lr b6e503c5 pc b6e72f6c cpsr
60070010
I/DEBUG ( 182):
I/DEBUG ( 182): backtrace:
I/DEBUG ( 182): #00 pc 00039f6c /system/lib/libc.so (tgkill+12)
I/DEBUG ( 182): #01 pc 000173c1 /system/lib/libc.so (pthread_kill+52)
I/DEBUG ( 182): #02 pc 00017fd3 /system/lib/libc.so (raise+10)
I/DEBUG ( 182): #03 pc 00014795 /system/lib/libc.so (__libc_android_abor
t+36)
I/DEBUG ( 182): #04 pc 00012f44 /system/lib/libc.so (abort+4)
I/DEBUG ( 182): #05 pc 00228cd7 /system/lib/libart.so (art::Runtime::Abo
rt()+170)
I/DEBUG ( 182): #06 pc 000a7371 /system/lib/libart.so (art::LogMessage::
~LogMessage()+1360)
I/DEBUG ( 182): #07 pc 000b1b17 /system/lib/libart.so (art::JniAbort(cha
r const*, char const*)+1118)
I/DEBUG ( 182): #08 pc 000b2055 /system/lib/libart.so (art::JniAbortF(ch
ar const*, char const*, ...)+68)
I/DEBUG ( 182): #09 pc 000b530f /system/lib/libart.so (art::ScopedCheck:
:ScopedCheck(_JNIEnv*, int, char const*)+1346)
I/DEBUG ( 182): #10 pc 000b7755 /system/lib/libart.so (art::CheckJNI::Ge
tMethodID(_JNIEnv*, _jclass*, char const*, char const*)+36)
I/DEBUG ( 182): #11 pc 001332f7 /data/app/com.enterprisemobility.OCR-1/l
ib/arm/libtess.so (Java_com_googlecode_tesseract_android_TessBaseAPI_nativeClass
Init+46)
I/DEBUG ( 182): #12 pc 0000614d /data/dalvik-cache/arm/data@app@com.ente
rprisemobility.OCR-1@base.apk@classes.dex
W/ActivityManager( 536): Force finishing activity 1 com.enterprisemobility.OC
R/.MainActivity
I/DEBUG ( 182):
I/DEBUG ( 182): Tombstone written to: /data/tombstones/tombstone_07
解决方法:
中止消息相对清楚:您为传递给此函数的类中不存在的字段名称调用GetFieldID(cls,fieldName),但不检查该错误,并继续调用其他JNI函数.不幸的是,你不能忽视这样的错误.您必须在调用GetMethodID()或大多数JNI函数之前调用ExceptionClear().
您可以使用addr2line查找对getMethodID()崩溃的特定调用,并基于此,派生对GetFieldID(cls,fieldName)的调用失败.但我建议将错误检查添加到所有JNI调用,因为明天其他一些函数可能会抛出异常.
内容总结
以上是互联网集市为您收集整理的java – 应用程序中的Android JNI DETECTED ERROR:JNI GetMethodID被调用挂起异常全部内容,希望文章能够帮你解决java – 应用程序中的Android JNI DETECTED ERROR:JNI GetMethodID被调用挂起异常所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。