Skip to content
This repository has been archived by the owner on Mar 17, 2022. It is now read-only.

no field with name='mNativeData' signature='I' in class Lcom/googlecode/tesseract/android/TessBaseAPI #82

Closed
mensoif opened this issue May 23, 2015 · 2 comments

Comments

@mensoif
Copy link

mensoif commented May 23, 2015

I tried to rebuild an android app wich contains tess-two as library (https://github.com/luklanis/esr-scanner). When using as is, I get this error

Process: ch.luklanis.esscan, PID: 3603
java.lang.NoSuchFieldError: no field with name='mNativeData' signature='I' in class Lcom/googlecode/tesseract/android/TessBaseAPI;
at com.googlecode.tesseract.android.TessBaseAPI.nativeClassInit(Native Method)
at com.googlecode.tesseract.android.TessBaseAPI.(TessBaseAPI.java:47)
at ch.luklanis.esscan.CaptureActivity.initOcrEngine(CaptureActivity.java:545)
at ch.luklanis.esscan.CaptureActivity.onResume(CaptureActivity.java:198)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1192)
at android.app.Activity.performResume(Activity.java:5310)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2778)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2817)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)

When reverting commit bc931c9 (private long mNativeData; changed to private int mNativeData;)

This happens on the android emulator arm cpu/abi, but also on my phone android 4.4 (Qualcomm 8228)

I used the latest ndk available android-ndk-r10e-linux-x86_64.bin

Thanks

@rmtheis
Copy link
Owner

rmtheis commented May 23, 2015

Looks like the esr-scanner project uses a pre-compiled version of tess.so that works with an older version of TessBaseAPI.java.

I think the best solution is to re-build the *.so libraries using the tess-two build instructions and replace them for the ones in the native-libs.jar file in the esr-scanner project. (You can create a jar file by creating a zip file and renaming its extension.)

Alternately, you can roll back the tess-two code to an old version that pre-dates the commit that added the 64-bit support and use that.

@rmtheis rmtheis closed this as completed May 23, 2015
@mensoif
Copy link
Author

mensoif commented May 23, 2015

Thanks a lot for supporting a newb like me.

Regards.
Gerard

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants