title: java.lang.ExceptionInInitializerError in Android
body: <p>I'm trying to create an Android Application that can verify a face   But when I try to run my app on my emulator (using Eclipse), I have this result in my logcat:</p>
  
  <pre><code>       06-16 14:51:24.326: E/AndroidRuntime(4305): FATAL EXCEPTION: main
  06-16 14:51:24.326: E/AndroidRuntime(4305): Process: com.neurotec.samples.faceverification, PID: 4305
  06-16 14:51:24.326: E/AndroidRuntime(4305): java.lang.ExceptionInInitializerError
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at com.neurotec.view.NGui.&lt;clinit&gt;(NGui.java:56)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at com.neurotec.view.NViewBase.&lt;clinit&gt;(NViewBase.java:30)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at java.lang.reflect.Constructor.constructNative(Native Method)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at android.view.LayoutInflater.createView(LayoutInflater.java:594)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:341)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at android.app.Activity.setContentView(Activity.java:1975)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at com.neurotec.samples.faceverification.FaceVerificationApplication.onCreate(FaceVerificationApplication.java:46)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at android.app.Activity.performCreate(Activity.java:5370)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2331)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2422)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at android.app.ActivityThread.access$800(ActivityThread.java:151)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at android.os.Handler.dispatchMessage(Handler.java:110)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at android.os.Looper.loop(Looper.java:193)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at android.app.ActivityThread.main(ActivityThread.java:5330)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at java.lang.reflect.Method.invokeNative(Native Method)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at java.lang.reflect.Method.invoke(Method.java:515)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at dalvik.system.NativeStart.main(Native Method)
  06-16 14:51:24.326: E/AndroidRuntime(4305): Caused by: java.lang.ExceptionInInitializerError
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at com.neurotec.media.NMedia.&lt;clinit&gt;(NMedia.java:49)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at com.neurotec.view.NGui.&lt;clinit&gt;(NGui.java:47)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     ... 26 more
  06-16 14:51:24.326: E/AndroidRuntime(4305): Caused by: java.lang.ExceptionInInitializerError
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at com.neurotec.lang.NCore.&lt;clinit&gt;(NCore.java:140)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at com.neurotec.lang.NTypes.&lt;clinit&gt;(NTypes.java:171)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at com.neurotec.media.NMedia.&lt;clinit&gt;(NMedia.java:46)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     ... 27 more
  06-16 14:51:24.326: E/AndroidRuntime(4305): Caused by: java.lang.NoClassDefFoundError: com.sun.jna.Platform
  06-16 14:51:24.326: E/AndroidRuntime(4305):     at com.neurotec.lang.NCore.&lt;clinit&gt;(NCore.java:123)
  06-16 14:51:24.326: E/AndroidRuntime(4305):     ... 29 more
  </code></pre>
  
  <p>The code for FaceVerificationApplication.java is as follows : </p>
  
  <pre><code>public class FaceVerificationApplication extends BaseActivity implements
          EnrollmentDialogListener, UserSelectionListener {
  
      // ===========================================================
      // Private fields
      // ===========================================================
  
      private static final String EXTRA_REQUEST_CODE = "request_code";
      private static final int VERIFICATION_REQUEST_CODE = 1;
      private static final int TIMEOUT = 60000;
      private boolean mAppClosing;
      private NFaceVerificationView mFaceView;
  
      // ===========================================================
      // Protected methods
      // ===========================================================
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_nlvdemo);
          // on application start you must set NCore context
          NCore.setContext(this);
  
          new Thread(new Runnable() {
  
              @Override
              public void run() {
                  try {
                      showProgress(R.string.msg_initialising);
  
                      // get NFV for the first time
                      final NFaceVerification nfv = NFV.getInstance();
  
                      // load settings
                      SettingsFragment.loadSettings();
  
                      // button implementations
                      Button mEnrollButton = (Button) findViewById(R.id.button_enroll);
                      mEnrollButton
                              .setOnClickListener(new View.OnClickListener() {
  
                                  @Override
                                  public void onClick(View v) {
                                      EnrollmentDialogFragment enrollDialog = new EnrollmentDialogFragment();
                                      enrollDialog.show(getFragmentManager(),
                                              "enrollment");
                                  }
                              });
  
                      Button mCancelButton = (Button) findViewById(R.id.button_cancel);
                      mCancelButton
                              .setOnClickListener(new View.OnClickListener() {
  
                                  @Override
                                  public void onClick(View v) {
                                      showProgress(R.string.msg_cancelling);
                                      nfv.cancel();
                                      hideProgress();
                                  }
                              });
  
                      Button mVerifyButton = (Button) findViewById(R.id.button_verify);
                      mVerifyButton
                              .setOnClickListener(new View.OnClickListener() {
  
                                  @Override
                                  public void onClick(View v) {
                                      Bundle bundle = new Bundle();
                                      bundle.putInt(EXTRA_REQUEST_CODE,
                                              VERIFICATION_REQUEST_CODE);
                                      UserListFragment userList = (UserListFragment) UserListFragment
                                              .newInstance(nfv.getUsers(), true,
                                                      bundle);
                                      userList.show(getFragmentManager(),
                                              "verification");
                                  }
                              });
  
                      // set frontal camera
                      String[] names = nfv.getAvailableCameraNames();
                      for (String n : names) {
                          if (n.contains("Front")) {
                              nfv.setCamera(n);
                              break;
                          }
                      }
  
                      mFaceView = (NFaceVerificationView) findViewById(R.id.nFaceView);
                      nfv.addCapturePreviewListener(new NFaceVerificationCapturePreviewListener() {
  
                          @Override
                          public void capturePreview(
                                  NFaceVerificationCapturePreviewEvent arg0) {
                              mFaceView.setEvent(arg0);
                          }
                      });
  
                      hideProgress();
                  } catch (Exception ex) {
                      hideProgress();
                      showError(ex);
                  }
              }
  
          }).start();
      }
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.nlvdemo, menu);
          return true;
      }
  
      @Override
      public void onBackPressed() {
          super.onBackPressed();
          mAppClosing = true;
      }
  
      @Override
      public void onEnrollmentIDProvided(final String id) {
          new Thread(new Runnable() {
  
              @Override
              public void run() {
                  try {
                      // cancel in there are any other operations in progress
                      NFV.getInstance().cancel();
                      NFaceVerificationStatus status = NFV.getInstance().enroll(
                              id, TIMEOUT, null);
                      showInfo(String.format(
                              getString(R.string.msg_operation_status),
                              status.toString()));
                  } catch (Throwable e) {
                      showError(e);
                  }
              }
          }).start();
      };
  
      @Override
      public void onUserSelected(final NFaceVerificationUser user, Bundle bundle) {
          new Thread(new Runnable() {
  
              @Override
              public void run() {
                  try {
                      // cancel in there are any other operations in progress
                      NFV.getInstance().cancel();
                      NFaceVerificationStatus status = NFV.getInstance().verify(
                              user.getId(), TIMEOUT);
                      showInfo(String.format(
                              getString(R.string.msg_operation_status),
                              status.toString()));
                  } catch (Throwable e) {
                      showError(e);
                  }
              }
          }).start();
      };
  
      @Override
      protected void onStop() {
          if (mAppClosing) {
              NFV.getInstance().cancel();
              NFV.dispose();
          }
          super.onStop();
      }
  
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          int id = item.getItemId();
          if (id == R.id.action_clear_db) {
              new Thread(new Runnable() {
  
                  @Override
                  public void run() {
                      // cancel if there are any other operations in progress
                      NFV.getInstance().cancel();
                      NFV.getInstance().getUsers().clear();
                  }
              }).start();
              return true;
          } else if (id == R.id.action_settings) {
              Intent intent = new Intent(this, SettingsActivity.class);
              startActivity(intent);
  
              return true;
          }
          return super.onOptionsItemSelected(item);
      }
  
  }
  </code></pre>
  
  <p>How can I solve this exception ? Any advice is of great help . </p>