当我启动使用tes两个OCR引擎的android应用程序时,为什么会得到java.lang.ExceptionInInitializerError

当我启动使用tes两个OCR引擎的android应用程序时,为什么会得到java.lang.ExceptionInInitializerError,android,unsatisfiedlinkerror,Android,Unsatisfiedlinkerror,这是我运行应用程序时得到的logcat报告 07-06 15:39:40.151: E/AndroidRuntime(6777): FATAL EXCEPTION: main 07-06 15:39:40.151: E/AndroidRuntime(6777): java.lang.ExceptionInInitializerError 07-06 15:39:40.151: E/AndroidRuntime(6777): at edu.sfsu.cs.orange.ocr.Captur

这是我运行应用程序时得到的logcat报告

07-06 15:39:40.151: E/AndroidRuntime(6777): FATAL EXCEPTION: main
07-06 15:39:40.151: E/AndroidRuntime(6777): java.lang.ExceptionInInitializerError
07-06 15:39:40.151: E/AndroidRuntime(6777):     at edu.sfsu.cs.orange.ocr.CaptureActivity.initOcrEngine(CaptureActivity.java:714)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at edu.sfsu.cs.orange.ocr.CaptureActivity.onResume(CaptureActivity.java:371)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1184)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at android.app.Activity.performResume(Activity.java:5082)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2569)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2607)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2093)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at android.app.ActivityThread.access$600(ActivityThread.java:134)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1199)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at android.os.Looper.loop(Looper.java:137)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at android.app.ActivityThread.main(ActivityThread.java:4744)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at java.lang.reflect.Method.invokeNative(Native Method)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at java.lang.reflect.Method.invoke(Method.java:511)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at dalvik.system.NativeStart.main(Native Method)
07-06 15:39:40.151: E/AndroidRuntime(6777): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load lept: findLibrary returned null
07-06 15:39:40.151: E/AndroidRuntime(6777):     at java.lang.Runtime.loadLibrary(Runtime.java:365)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at java.lang.System.loadLibrary(System.java:535)
07-06 15:39:40.151: E/AndroidRuntime(6777):     at com.googlecode.tesseract.android.TessBaseAPI.<clinit>(TessBaseAPI.java:44)
07-06 15:39:40.151: E/AndroidRuntime(6777):     ... 17 more
07-06 15:39:40.151:E/AndroidRuntime(6777):致命异常:main
07-06 15:39:40.151:E/AndroidRuntime(6777):java.lang.ExceptionInInitializeError
07-06 15:39:40.151:E/AndroidRuntime(6777):在edu.sfsu.cs.orange.ocr.CaptureActivity.initOcrEngine(CaptureActivity.java:714)
07-06 15:39:40.151:E/AndroidRuntime(6777):在edu.sfsu.cs.orange.ocr.CaptureActivity.onResume(CaptureActivity.java:371)
07-06 15:39:40.151:E/AndroidRuntime(6777):在android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1184)
07-06 15:39:40.151:E/AndroidRuntime(6777):在android.app.Activity.performResume(Activity.java:5082)
07-06 15:39:40.151:E/AndroidRuntime(6777):在android.app.ActivityThread.performResumeActivity(ActivityThread.java:2569)
07-06 15:39:40.151:E/AndroidRuntime(6777):在android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2607)
07-06 15:39:40.151:E/AndroidRuntime(6777):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2093)
07-06 15:39:40.151:E/AndroidRuntime(6777):在android.app.ActivityThread.access$600(ActivityThread.java:134)
07-06 15:39:40.151:E/AndroidRuntime(6777):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1199)
07-06 15:39:40.151:E/AndroidRuntime(6777):在android.os.Handler.dispatchMessage(Handler.java:99)上
07-06 15:39:40.151:E/AndroidRuntime(6777):在android.os.Looper.loop(Looper.java:137)
07-06 15:39:40.151:E/AndroidRuntime(6777):在android.app.ActivityThread.main(ActivityThread.java:4744)上
07-06 15:39:40.151:E/AndroidRuntime(6777):位于java.lang.reflect.Method.Invokenactive(本机方法)
07-06 15:39:40.151:E/AndroidRuntime(6777):位于java.lang.reflect.Method.invoke(Method.java:511)
07-06 15:39:40.151:E/AndroidRuntime(6777):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-06 15:39:40.151:E/AndroidRuntime(6777):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-06 15:39:40.151:E/AndroidRuntime(6777):在dalvik.system.NativeStart.main(本机方法)
07-06 15:39:40.151:E/AndroidRuntime(6777):原因:java.lang.UnsatifiedLink错误:无法加载lept:findLibrary返回null
07-06 15:39:40.151:E/AndroidRuntime(6777):在java.lang.Runtime.loadLibrary(Runtime.java:365)上
07-06 15:39:40.151:E/AndroidRuntime(6777):位于java.lang.System.loadLibrary(System.java:535)
07-06 15:39:40.151:E/AndroidRuntime(6777):在com.googlecode.tesseract.android.TessBaseAPI.(TessBaseAPI.java:44)
2007-06 15:39:40.151:E/AndroidRuntime(6777):。。。还有17个

我正在尝试使用我下载的tess two库运行OCR应用程序。我在eclipse中打开了这个项目,并将其作为库添加到我的项目中。但当我启动应用程序时,它会崩溃,并显示上面的日志。在运行应用程序之前,是否需要编译tess 2库。如果是这样,请帮助我如何在windows 8计算机上编译它。

查看堆栈跟踪的底部:

Caused by: java.lang.UnsatisfiedLinkError: Couldnt load lept: findLibrary returned null
    at java.lang.Runtime.loadLibrary(Runtime.java:365)
    at java.lang.System.loadLibrary(System.java:535)
    [...]
在代码中,您使用的是本机库(例如,用C/C++编写并与之接口的库)。这里的问题是,Android无法找到库文件。因此,将抛出
未满足的linkerror

应用程序的本机源应该位于项目的
jni/
-子目录中。您还需要一个构建脚本来使用NDK交叉编译器构建源代码。在您的情况下,这些文件是

通常,编译的
.so
-文件进入项目的
libs/
-文件夹,然后可以使用加载,通常放在静态初始值设定项块中:

System.loadLibrary("filename");

有关库位置的详细信息,请参见此处:

无法加载lep:findLibrary返回null
项目中使用的任何本机库?发布你的代码!我使用tess两个OCR库。我想它是用C写的。。那么我需要编译这个库吗?是的。看,我读了TESSTwoGitHub页面,他们提到我需要使用linux终端编译代码!是否可以在windows中编译它!它说“这个构建可以在Linux、MacOSX和Windows7上运行”。它由NDK构建,NDK为Android创建ARM可执行代码。这与您的平台无关