Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 不能';从加载程序findLibrary加载lept返回null?_Android_Ocr - Fatal编程技术网

Android 不能';从加载程序findLibrary加载lept返回null?

Android 不能';从加载程序findLibrary加载lept返回null?,android,ocr,Android,Ocr,您好,我正在从事OCR(光学字符识别)工作。我从github获得了一个示例项目。对于该项目,我使用tess测试库项目,该项目成功构建并执行,但每当调用TessBaseAPI时,应用程序就会不幸停止。它显示以下日志错误 12-20 18:27:18.791: E/AndroidRuntime(24466): java.lang.ExceptionInInitializerError 12-20 18:27:18.791: E/AndroidRuntime(24466): at com.dat

您好,我正在从事OCR(光学字符识别)工作。我从github获得了一个示例项目。对于该项目,我使用tess测试库项目,该项目成功构建并执行,但每当调用TessBaseAPI时,应用程序就会不幸停止。它显示以下日志错误

12-20 18:27:18.791: E/AndroidRuntime(24466): java.lang.ExceptionInInitializerError
12-20 18:27:18.791: E/AndroidRuntime(24466):    at com.datumdroid.android.ocr.simple.SimpleAndroidOCRActivity.onPhotoTaken(SimpleAndroidOCRActivity.java:211)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at com.datumdroid.android.ocr.simple.SimpleAndroidOCRActivity.onActivityResult(SimpleAndroidOCRActivity.java:135)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at android.app.Activity.dispatchActivityResult(Activity.java:5293)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3315)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3362)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at android.app.ActivityThread.access$1100(ActivityThread.java:141)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at android.os.Looper.loop(Looper.java:137)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at android.app.ActivityThread.main(ActivityThread.java:5039)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at java.lang.reflect.Method.invokeNative(Native Method)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at java.lang.reflect.Method.invoke(Method.java:511)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at dalvik.system.NativeStart.main(Native Method)
12-20 18:27:18.791: E/AndroidRuntime(24466): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load lept from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.datumdroid.android.ocr.simple-1.apk,libraryPath=/data/app-lib/com.datumdroid.android.ocr.simple-1]: findLibrary returned null
12-20 18:27:18.791: E/AndroidRuntime(24466):    at java.lang.Runtime.loadLibrary(Runtime.java:365)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at java.lang.System.loadLibrary(System.java:535)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at com.googlecode.tesseract.android.TessBaseAPI.<clinit>(TessBaseAPI.java:47)
12-20 18:27:18.791:E/AndroidRuntime(24466):java.lang.exceptionininitializerror
12-20 18:27:18.791:E/AndroidRuntime(24466):在com.datumdroid.android.ocr.simple.SimpleAndroidOCRActivity.onphototake(SimpleAndroidOCRActivity.java:211)
12-20 18:27:18.791:E/AndroidRuntime(24466):位于com.datumdroid.android.ocr.simple.SimpleAndroidOCRActivity.onActivityResult(SimpleAndroidOCRActivity.java:135)
12-20 18:27:18.791:E/AndroidRuntime(24466):在android.app.Activity.dispatchActivityResult(Activity.java:5293)
12-20 18:27:18.791:E/AndroidRuntime(24466):在android.app.ActivityThread.deliverResults(ActivityThread.java:3315)
12-20 18:27:18.791:E/AndroidRuntime(24466):位于android.app.ActivityThread.handleSendResult(ActivityThread.java:3362)
12-20 18:27:18.791:E/AndroidRuntime(24466):在android.app.ActivityThread.access$1100(ActivityThread.java:141)
12-20 18:27:18.791:E/AndroidRuntime(24466):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282)
12-20 18:27:18.791:E/AndroidRuntime(24466):位于android.os.Handler.dispatchMessage(Handler.java:99)
12-20 18:27:18.791:E/AndroidRuntime(24466):在android.os.Looper.loop(Looper.java:137)
12-20 18:27:18.791:E/AndroidRuntime(24466):位于android.app.ActivityThread.main(ActivityThread.java:5039)
12-20 18:27:18.791:E/AndroidRuntime(24466):位于java.lang.reflect.Method.Invokenactive(本机方法)
12-20 18:27:18.791:E/AndroidRuntime(24466):在java.lang.reflect.Method.invoke(Method.java:511)
12-20 18:27:18.791:E/AndroidRuntime(24466):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-20 18:27:18.791:E/AndroidRuntime(24466):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-20 18:27:18.791:E/AndroidRuntime(24466):在dalvik.system.NativeStart.main(本机方法)
12-20 18:27:18.791:E/AndroidRuntime(24466):原因:java.lang.unsatifiedLinkError:无法从加载程序dalvik.system.PathClassLoader加载lept[dexPath=/data/app/com.datumdroid.android.ocr.simple-1.apk,libraryPath=/data/app lib/com.datumdroid.android.ocr.simple-1]:findLibrary返回null
12-20 18:27:18.791:E/AndroidRuntime(24466):在java.lang.Runtime.loadLibrary(Runtime.java:365)上
12-20 18:27:18.791:E/AndroidRuntime(24466):位于java.lang.System.loadLibrary(System.java:535)
12-20 18:27:18.791:E/AndroidRuntime(24466):位于com.googlecode.tesseract.android.TessBaseAPI.(TessBaseAPI.java:47)
请给出我的问题的解决方案,我的申请表中要求从5天开始计算

我在谷歌上搜索了很多,没有找到任何解决办法。。
谢谢

确保库文件“liblept.so”存在于libs/armeabi或libs/armeabi-v7a中,如果它们存在,请使用7Zip/WinRAR打开生成的APK文件,并确保它也存在于APK中。

的副本

问题是在特定库路径上找不到liblept.so(共享库)文件。在没有看到您的代码的情况下,唯一的假设是您的代码试图加载共享库liblept.so,而该库在该路径上不可用


另外,您正在使用的代码是在任何lib或内部包目录中都有liblept.so文件,或者您必须使用Android NDK生成(构建)该共享库。

我不确定您是否找到了问题的答案,但我的代码来自我的项目中命名错误的libs文件夹(是lib而不是libs)。我的问题是由于不小心删除了我的项目,不得不通过从我的手机中提取APK来恢复它。一旦我重命名了文件夹,我的问题就解决了。希望有帮助

Ppl,在挣扎了一天之后。。终于找到了解决办法

在tess两个模块的build.gradle中添加以下代码:

  sourceSets.main {
    manifest.srcFile 'src/main/AndroidManifest.xml'
    java.srcDirs = ['src/main/java']
    resources.srcDirs = ['src/main/java']
    res.srcDirs = ['src/main/res']
    jni.srcDirs = []
    jniLibs.srcDirs = ['src/main/jniLibs']
}
主要的事情是,请手动检查上述代码中指定的所有文件路径是否存在

谈到这个问题,请检查tess two库中存在“liblept.so”的位置。 对我来说,它位于/tesstwo/src/main/jniLibs/armeabi-v7a内部。因此,我在上面的代码中创建了jniLibs.srcDirs=['src/main/jniLibs']。希望能有帮助

可能重复的