Closed
Description
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