android - Run Time Error: FATAL EXCEPTION: main java.lang.ExceptionInInitializerError -


hi new android app development , trying implement simple ocr app found here: https://github.com/gautamgupta/simple-android-ocr using android studio, found errors had permission fixed getting error:

03-31 20:07:55.010      822-822/com.example.zakaria.myapp e/androidruntime﹕ fatal exception: main     java.lang.exceptionininitializererror             @ engenoid.tessocrtest.mainactivity.onphototaken(mainactivity.java:210)             @ engenoid.tessocrtest.mainactivity.onactivityresult(mainactivity.java:134)             @ android.app.activity.dispatchactivityresult(activity.java:5515)             @ android.app.activitythread.deliverresults(activitythread.java:3429)             @ android.app.activitythread.handlesendresult(activitythread.java:3476)             @ android.app.activitythread.access$1200(activitythread.java:157)             @ android.app.activitythread$h.handlemessage(activitythread.java:1337)             @ android.os.handler.dispatchmessage(handler.java:99)             @ android.os.looper.loop(looper.java:176)             @ android.app.activitythread.main(activitythread.java:5317)             @ java.lang.reflect.method.invokenative(native method)             @ java.lang.reflect.method.invoke(method.java:511)             @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1102)             @ com.android.internal.os.zygoteinit.main(zygoteinit.java:869)             @ dalvik.system.nativestart.main(native method)      caused by: java.lang.unsatisfiedlinkerror: couldn't load lept loader dalvik.system.pathclassloader[dexpath=/data/app/com.example.zakaria.myapp-10.apk,librarypath=/data/app-lib/com.example.zakaria.myapp-10]: findlibrary returned null             @ java.lang.runtime.loadlibrary(runtime.java:365)             @ java.lang.system.loadlibrary(system.java:535)             @ com.googlecode.tesseract.android.tessbaseapi.<clinit>(tessbaseapi.java:44)             at engenoid.tessocrtest.mainactivity.onphototaken(mainactivity.java:210)             at engenoid.tessocrtest.mainactivity.onactivityresult(mainactivity.java:134)             at android.app.activity.dispatchactivityresult(activity.java:5515)             at android.app.activitythread.deliverresults(activitythread.java:3429)             at android.app.activitythread.handlesendresult(activitythread.java:3476)             at android.app.activitythread.access$1200(activitythread.java:157)             at android.app.activitythread$h.handlemessage(activitythread.java:1337)             at android.os.handler.dispatchmessage(handler.java:99)             at android.os.looper.loop(looper.java:176)             at android.app.activitythread.main(activitythread.java:5317)             at java.lang.reflect.method.invokenative(native method)             at java.lang.reflect.method.invoke(method.java:511)             at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1102)             at com.android.internal.os.zygoteinit.main(zygoteinit.java:869)             at dalvik.system.nativestart.main(native method) 

here main activity:

package engenoid.tessocrtest;  import android.app.activity; import android.content.intent; import android.content.res.assetmanager; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.graphics.matrix; import android.media.exifinterface; import android.net.uri; import android.os.bundle; import android.os.environment; import android.provider.mediastore; import android.util.log; import android.view.view; import android.widget.button; import android.widget.edittext;  import com.example.zakaria.myapp.r; import com.googlecode.tesseract.android.tessbaseapi;  import java.io.file; import java.io.fileoutputstream; import java.io.ioexception; import java.io.inputstream; import java.io.outputstream;  public class mainactivity extends activity {     public static final string package_name = "com.datumdroid.android.ocr.simple";     public static final string data_path = environment             .getexternalstoragedirectory().tostring() + "/simpleandroidocr/";      // should have trained data file in assets folder     // can them at:     // http://code.google.com/p/tesseract-ocr/downloads/list     public static final string lang = "eng";      private static final string tag = "simpleandroidocr.java";      protected button _button;     // protected imageview _image;     protected edittext _field;     protected string _path;     protected boolean _taken;      protected static final string photo_taken = "photo_taken";      @override     public void oncreate(bundle savedinstancestate) {          string[] paths = new string[] { data_path, data_path + "tessdata/" };          (string path : paths) {             file dir = new file(path);             if (!dir.exists()) {                 if (!dir.mkdirs()) {                     log.v(tag, "error: creation of directory " + path + " on sdcard failed");                     return;                 } else {                     log.v(tag, "created directory " + path + " on sdcard");                 }             }          }          // lang.traineddata file app (in assets folder)         // can them at:         // http://code.google.com/p/tesseract-ocr/downloads/list         // area needs work , optimization         if (!(new file(data_path + "tessdata/" + lang + ".traineddata")).exists()) {             try {                  assetmanager assetmanager = getassets();                 inputstream in = assetmanager.open("tessdata/" + lang + ".traineddata");                 //gzipinputstream gin = new gzipinputstream(in);                 outputstream out = new fileoutputstream(data_path                         + "tessdata/" + lang + ".traineddata");                  // transfer bytes in out                 byte[] buf = new byte[1024];                 int len;                 //while ((lenf = gin.read(buff)) > 0) {                 while ((len = in.read(buf)) > 0) {                     out.write(buf, 0, len);                 }                 in.close();                 //gin.close();                 out.close();                  log.v(tag, "copied " + lang + " traineddata");             } catch (ioexception e) {                 log.e(tag, "was unable copy " + lang + " traineddata " + e.tostring());             }         }          super.oncreate(savedinstancestate);          setcontentview(r.layout.main);          // _image = (imageview) findviewbyid(r.id.image);         _field = (edittext) findviewbyid(r.id.field);         _button = (button) findviewbyid(r.id.button);         _button.setonclicklistener(new buttonclickhandler());          _path = data_path + "/ocr.jpg";     }      public class buttonclickhandler implements view.onclicklistener {         public void onclick(view view) {             log.v(tag, "starting camera app");             startcameraactivity();         }     }      // simple android photo capture:     // http://labs.makemachine.net/2010/03/simple-android-photo-capture/      protected void startcameraactivity() {         file file = new file(_path);         uri outputfileuri = uri.fromfile(file);          final intent intent = new intent(mediastore.action_image_capture);         intent.putextra(mediastore.extra_output, outputfileuri);          startactivityforresult(intent, 0);     }      @override     protected void onactivityresult(int requestcode, int resultcode, intent data) {          log.i(tag, "resultcode: " + resultcode);          if (resultcode == -1) {             onphototaken();         } else {             log.v(tag, "user cancelled");         }     }      @override     protected void onsaveinstancestate(bundle outstate) {         outstate.putboolean(mainactivity.photo_taken, _taken);     }      @override     protected void onrestoreinstancestate(bundle savedinstancestate) {         log.i(tag, "onrestoreinstancestate()");         if (savedinstancestate.getboolean(mainactivity.photo_taken)) {             onphototaken();         }     }      protected void onphototaken() {         _taken = true;          bitmapfactory.options options = new bitmapfactory.options();         options.insamplesize = 4;          bitmap bitmap = bitmapfactory.decodefile(_path, options);          try {             exifinterface exif = new exifinterface(_path);             int exiforientation = exif.getattributeint(                     exifinterface.tag_orientation,                     exifinterface.orientation_normal);              log.v(tag, "orient: " + exiforientation);              int rotate = 0;              switch (exiforientation) {                 case exifinterface.orientation_rotate_90:                     rotate = 90;                     break;                 case exifinterface.orientation_rotate_180:                     rotate = 180;                     break;                 case exifinterface.orientation_rotate_270:                     rotate = 270;                     break;             }              log.v(tag, "rotation: " + rotate);              if (rotate != 0) {                  // getting width & height of given image.                 int w = bitmap.getwidth();                 int h = bitmap.getheight();                  // setting pre rotate                 matrix mtx = new matrix();                 mtx.prerotate(rotate);                  // rotating bitmap                 bitmap = bitmap.createbitmap(bitmap, 0, 0, w, h, mtx, false);             }              // convert argb_8888, required tess             bitmap = bitmap.copy(bitmap.config.argb_8888, true);          } catch (ioexception e) {             log.e(tag, "couldn't correct orientation: " + e.tostring());         }          // _image.setimagebitmap( bitmap );          log.v(tag, "before baseapi");          tessbaseapi baseapi = new tessbaseapi();         baseapi.setdebug(true);         baseapi.init(data_path, lang);         baseapi.setimage(bitmap);          string recognizedtext = baseapi.getutf8text();          baseapi.end();          // have text in recognizedtext var, can it.         // display stripped out trimmed alpha-numeric version of (if lang eng)         // garbage doesn't make display.          log.v(tag, "ocred text: " + recognizedtext);          if ( lang.equalsignorecase("eng") ) {             recognizedtext = recognizedtext.replaceall("[^a-za-z0-9]+", " ");         }          recognizedtext = recognizedtext.trim();          if ( recognizedtext.length() != 0 ) {             _field.settext(_field.gettext().tostring().length() == 0 ? recognizedtext : _field.gettext() + " " + recognizedtext);             _field.setselection(_field.gettext().tostring().length());         }       }  } 

and manifest

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.example.zakaria.myapp" >        <uses-permission android:name="android.permission.camera"/>     <uses-permission android:name="android.permission.write_external_storage" />     <uses-permission android:name="android.permission.read_external_storage" />     <uses-feature android:name="android.hardware.camera.autofocus" />     <uses-feature         android:name="android.hardware.camera.flash"         android:required="false" />     <uses-feature android:name="android.hardware.camera" />      <application         android:allowbackup="true"         android:icon="@mipmap/ic_launcher"         android:label="@string/app_name"         android:theme="@style/apptheme">         <activity             android:name="engenoid.tessocrtest.mainactivity"             android:label="@string/app_name" >             <intent-filter>                 <action android:name="android.intent.action.main" />                  <category android:name="android.intent.category.launcher" />             </intent-filter>         </activity>     </application>  </manifest> 

so if need post thing else please tell me , in advance!

@gabesechan right went through app files , there supposed file name, doing further google search learnt that file supposed generated when building tess-two library used in app, think didn't right. thank much.


Comments

Popular posts from this blog

cakephp - simple blog with croogo -

How to group boxplot outliers in gnuplot -

bash - Performing variable substitution in a string -