Skip to content

tesseract - Couldn't load gnustl_static: findLibrary returned null - android #38

Closed
bytedeco/javacpp
#256
@dariuszseweryn

Description

@dariuszseweryn

Hello!

First of all - I will mention that I am new to using JNI so my problem may be a bit noobish.

I am trying to get tesseract to work on Android. I am using a Windows machine to develop so I decided to use precompiled libs from maven as there would be probably a lot of problems with lack of needed dependency libs.

I am using Gradle so I have added in dependencies:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
//    compile fileTree(dir: 'jniLibs', include: ['*.so'])
    wearApp project(':wear')
    compile 'com.android.support:appcompat-v7:21.0.3'
    //    compile 'com.google.android.gms:play-services:6.5.87'
    compile 'com.octo.android.robospice:robospice:1.4.14'
    compile 'com.octo.android.robospice:robospice-okhttp:1.4.14'
    compile 'com.jakewharton:butterknife:6.1.0'
    compile 'org.bytedeco.javacpp-presets:tesseract:3.03-rc1-0.10'
    compile 'org.bytedeco.javacpp-presets:tesseract:3.03-rc1-0.10:android-arm'
    compile 'org.bytedeco.javacpp-presets:leptonica:1.71-0.10:android-arm'
}

Everything seems fine, tesseract is being seen, lept as well, but then:

    02-20 23:24:11.812    5231-5231/pl.seweryn.dariusz.pogodaicm D/dalvikvm﹕ No JNI_OnLoad found in /system/lib/libc.so 0x40513af8, skipping init
    02-20 23:24:11.812    5231-5231/pl.seweryn.dariusz.pogodaicm D/dalvikvm﹕ No JNI_OnLoad found in /system/lib/libm.so 0x40513af8, skipping init
    02-20 23:24:11.816    5231-5231/pl.seweryn.dariusz.pogodaicm D/dalvikvm﹕ No JNI_OnLoad found in /system/lib/libz.so 0x40513af8, skipping init
    02-20 23:24:11.816    5231-5231/pl.seweryn.dariusz.pogodaicm D/dalvikvm﹕ No JNI_OnLoad found in /system/lib/libdl.so 0x40513af8, skipping init
    02-20 23:24:11.820    5231-5231/pl.seweryn.dariusz.pogodaicm D/dalvikvm﹕ No JNI_OnLoad found in /system/lib/liblog.so 0x40513af8, skipping init
    02-20 23:24:11.820    5231-5231/pl.seweryn.dariusz.pogodaicm D/dalvikvm﹕ Trying to load lib /data/data/pl.seweryn.dariusz.pogodaicm/lib/liblept.so 0x40513af8
    02-20 23:24:11.894    5231-5231/pl.seweryn.dariusz.pogodaicm D/dalvikvm﹕ Added shared lib /data/data/pl.seweryn.dariusz.pogodaicm/lib/liblept.so 0x40513af8
    02-20 23:24:11.894    5231-5231/pl.seweryn.dariusz.pogodaicm D/dalvikvm﹕ No JNI_OnLoad found in /data/data/pl.seweryn.dariusz.pogodaicm/lib/liblept.so 0x40513af8, skipping init
    02-20 23:24:11.894    5231-5231/pl.seweryn.dariusz.pogodaicm D/dalvikvm﹕ Trying to load lib /data/data/pl.seweryn.dariusz.pogodaicm/lib/libjnilept.so 0x40513af8
    02-20 23:24:11.949    5231-5231/pl.seweryn.dariusz.pogodaicm W/dalvikvm﹕ Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lorg/bytedeco/javacpp/lept;
    02-20 23:24:11.949    5231-5231/pl.seweryn.dariusz.pogodaicm W/dalvikvm﹕ Exception Ljava/lang/ExceptionInInitializerError; thrown while initializing Lorg/bytedeco/javacpp/tesseract$TessBaseAPI;
    02-20 23:24:11.957    5231-5231/pl.seweryn.dariusz.pogodaicm D/AndroidRuntime﹕ Shutting down VM
    02-20 23:24:11.957    5231-5231/pl.seweryn.dariusz.pogodaicm W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x40015578)
    02-20 23:24:12.000    5231-5231/pl.seweryn.dariusz.pogodaicm E/AndroidRuntime﹕ FATAL EXCEPTION: main
     java.lang.ExceptionInInitializerError
            at pl.seweryn.dariusz.pogodaicm.ActivityMain.onStart(ActivityMain.java:70)
            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129)
            at android.app.Activity.performStart(Activity.java:3791)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1624)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
            at android.app.ActivityThread.access$1500(ActivityThread.java:117)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:123)
            at android.app.ActivityThread.main(ActivityThread.java:3687)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:507)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.ExceptionInInitializerError
            at java.lang.Class.classForName(Native Method)
            at java.lang.Class.forName(Class.java:234)
            at org.bytedeco.javacpp.Loader.load(Loader.java:385)
            at org.bytedeco.javacpp.Loader.load(Loader.java:353)
            at org.bytedeco.javacpp.tesseract$TessBaseAPI.<clinit>(tesseract.java:3070)
            at pl.seweryn.dariusz.pogodaicm.ActivityMain.onStart(ActivityMain.java:70)
            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129)
            at android.app.Activity.performStart(Activity.java:3791)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1624)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
            at android.app.ActivityThread.access$1500(ActivityThread.java:117)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:123)
            at android.app.ActivityThread.main(ActivityThread.java:3687)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:507)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
            at dalvik.system.NativeStart.main(Native Method)
         Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1963]:    82 could not load needed library 'liblept.so.4' for 'libjnilept.so' (load_library[1105]: Library 'liblept.so.4' not found)
            at java.lang.Runtime.loadLibrary(Runtime.java:434)
            at java.lang.System.loadLibrary(System.java:554)
            at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:535)
            at org.bytedeco.javacpp.Loader.load(Loader.java:410)
            at org.bytedeco.javacpp.Loader.load(Loader.java:353)
            at org.bytedeco.javacpp.lept.<clinit>(lept.java:10)
            at java.lang.Class.classForName(Native Method)
            at java.lang.Class.forName(Class.java:234)
            at org.bytedeco.javacpp.Loader.load(Loader.java:385)
            at org.bytedeco.javacpp.Loader.load(Loader.java:353)
            at org.bytedeco.javacpp.tesseract$TessBaseAPI.<clinit>(tesseract.java:3070)
            at pl.seweryn.dariusz.pogodaicm.ActivityMain.onStart(ActivityMain.java:70)
            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129)
            at android.app.Activity.performStart(Activity.java:3791)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1624)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
            at android.app.ActivityThread.access$1500(ActivityThread.java:117)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:123)
            at android.app.ActivityThread.main(ActivityThread.java:3687)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:507)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.UnsatisfiedLinkError: Couldn't load gnustl_static: findLibrary returned null
            at java.lang.Runtime.loadLibrary(Runtime.java:429)
            at java.lang.System.loadLibrary(System.java:554)
            at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:535)
            at org.bytedeco.javacpp.Loader.load(Loader.java:401)
            at org.bytedeco.javacpp.Loader.load(Loader.java:353)
            at org.bytedeco.javacpp.lept.<clinit>(lept.java:10)
            at java.lang.Class.classForName(Native Method)
            at java.lang.Class.forName(Class.java:234)
            at org.bytedeco.javacpp.Loader.load(Loader.java:385)
            at org.bytedeco.javacpp.Loader.load(Loader.java:353)
            at org.bytedeco.javacpp.tesseract$TessBaseAPI.<clinit>(tesseract.java:3070)
            at pl.seweryn.dariusz.pogodaicm.ActivityMain.onStart(ActivityMain.java:70)
            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129)
            at android.app.Activity.performStart(Activity.java:3791)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1624)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
            at android.app.ActivityThread.access$1500(ActivityThread.java:117)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:123)
            at android.app.ActivityThread.main(ActivityThread.java:3687)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:507)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
            at dalvik.system.NativeStart.main(Native Method)

As a bit of background - I try to run the application and create a new TessBaseAPI() on a Samsung Galaxy S1 (old but gold) with Android 2.3.3.
As I was googling around for a solution I have found some page which makes me think:

  • either the android-arm jars do not contain properly build .so files (with gnustl_static) or my Android device is weird and doesn't have that library. Can you share some thoughts?

Thank you in advance.

Best Regards

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions