java.lang.ExceptionInInitializerError в Android

Я пытаюсь создать приложение для Android, которое может проверить лицо. Но когда я пытаюсь запустить свое приложение на своем эмуляторе (используя Eclipse), у меня появляется такой результат в моей logcat:

       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.<clinit>(NGui.java:56)
06-16 14:51:24.326: E/AndroidRuntime(4305):     at com.neurotec.view.NViewBase.<clinit>(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.<clinit>(NMedia.java:49)
06-16 14:51:24.326: E/AndroidRuntime(4305):     at com.neurotec.view.NGui.<clinit>(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.<clinit>(NCore.java:140)
06-16 14:51:24.326: E/AndroidRuntime(4305):     at com.neurotec.lang.NTypes.<clinit>(NTypes.java:171)
06-16 14:51:24.326: E/AndroidRuntime(4305):     at com.neurotec.media.NMedia.<clinit>(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.<clinit>(NCore.java:123)
06-16 14:51:24.326: E/AndroidRuntime(4305):     ... 29 more

Код для FaceVerificationApplication.java выглядит следующим образом:

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);
    }

}

Как я могу решить это исключение? Любой совет очень поможет.

Ответы на вопрос(5)

он не может найти библиотеку для Java Native Access Platform

в Eclipse в свойствах вашего проекта проверьте библиотеки для JNA Platform

java.lang.ClassNotFoundException: com.sun.jna. Платформа

Прошло несколько лет с тех пор, как я использовал затмение.

 Icche Guri14 июн. 2016 г., 08:59
Я устанавливаю файл jna.jar?
 Icche Guri16 июн. 2016 г., 10:54
Вопрос отредактирован. Некоторая модификация должна быть помещена в ошибку исключения.
Решение Вопроса

кты. У меня есть ошибки о родных библиотеках в jna.jar. Так что в этом случае, в Eclipse, я должен перейти к«Настройки»> «Android»> «Сборка»> снимите флажок «Принудительная ошибка, когда внешние файлы содержат собственные библиотеки». Тогда моя проблема решена.

вам придется добавить больше зависимостей, которые могут быть здесьhttps://github.com/java-native-access/jna/tree/master/lib если у меня есть правильная библиотека.

Для этого щелкните правой кнопкой мыши свой проект в Eclipse, а затем перейдите в Свойства (должен быть нижний вариант).

Слева есть несколько опций, выберите «Java Build Path». Здесь вы можете добавить «Добавить банки» или «Добавить внешние банки». Если вы выберете Add External Jar, вы можете установить его из любого места, если вы выберете Add Jars, вы можете установить его внутри проекта папки. Я бы добавил папку jar в папку проекта и поместил туда все зависимости jar, в противном случае, если вы перемещаете jar в другую папку, вам нужно сделать это снова.

Добавьте все баночки из ссылки и вложенных ссылок, которые там есть. Посмотрите, решит ли это проблему. Eclipse сообщит вам, если у вас отсутствуют зависимости для ваших классов, но не сообщит, если зависимости отсутствуют, пока вы не запустите свой код.

 osimer pothe20 июн. 2016 г., 05:31
Я скачал все это. Но мог получить эту ошибку
 applecrusher20 июн. 2016 г., 16:36
Какую версию Java вы используете?
 applecrusher19 июн. 2016 г., 19:20
Да, попробуйте и посмотрите, работает ли это. Также, как другие предложили попробовать скачать банку в папке dist тожеgithub.com/java-native-access/jna/tree/master/dist
 osimer pothe20 июн. 2016 г., 07:03
Предупреждение Dx: игнорирование атрибута InnerClasses для анонимного внутреннего класса (clover.it.unimi.dsi.fastutil.longs.Long2FloatLinkedOpenHashMap $ 2), который не поставляется со связанным атрибутом EnclosingMethod. Этот класс, вероятно, был создан компилятором, который не предназначался для современного формата файла .class. Рекомендуемое решение - перекомпилировать класс из исходного кода с использованием современного компилятора и без указания параметров типа «-target». Следствием игнорирования этого предупреждения является то, что отражающие операции над этим классом будут неправильно указывать, что этоне внутренний класс.
 osimer pothe19 июн. 2016 г., 05:46
Должен ли я импортировать все файлы JAR по ссылке, указанной вами?

так что вы знаете, как решить это сейчас. Но это для других. У Java есть отличная обработка сообщений об исключениях, где вы можете найти почти все, что вам нужно, чтобы это исправить. Это только мое мнение и советКаждый раз смотрите на CAUSED BY: part.

Если у вас есть исключение, посмотрите на последнее вызванное сообщением. Например, вот оно: Причина: java.lang.NoClassDefFoundError: com.sun.jna.Platform. У Java много классов ошибок. Это ошибка из Object-> Throwable->Error-> LinkageError, Ошибка => Проблема во время выполнения, класс не найден. Def Found Error - типичная проблема для загрузчика классов. Все, что вам может понадобиться для объяснения ошибки, находится в документации Java.

Кстати из ваших очередей в комментариях, вот решение для добавления внешней библиотеки.

КАК ДОБАВИТЬ БИБЛИОТЕКУ ДЛЯ ПРОЕКТА ЗАТМЕНИЯ: Загрузите jar, который описан другими здесь (jna.jar) и добавьте его вLib папку, а затем вы должны добавить его в путь сборки (тогда classloader сможет найти его, и это решит вашу проблему). Если вы используете Eclipse, вы можете импортировать их напрямую через Eclipse в вашу папку lib (щелкните правой кнопкой мыши папку проекта, выберите buildpath, вкладку библиотеки и добавьте jar) или просто скопируйте jar непосредственно в папку lib, затем щелкните правой кнопкой мыши и выберите Build Path -> Add в Buildpath.

 Hrabosch19 июн. 2016 г., 12:59
И, возможно, скачать их обоих. jna.jar и jna-platform.jar, вот JNA.jarsearch.maven.org/...
 osimer pothe19 июн. 2016 г., 12:31
Я импортировал jna-platform-4.1.0.jar в мой проект, но все равно он получает эту ошибку.
 osimer pothe20 июн. 2016 г., 06:29
Когда я пытаюсь добавить jna-4.2.2.jar, я получаю следующую ошибкуpaste.ofcode.org/nnrhBn5CJKcj9jkiCT3nxy
 Hrabosch19 июн. 2016 г., 12:54
Вы перекомпилировали свои зависимости?
 Hrabosch20 июн. 2016 г., 12:38
github.com/java-native-access/jna/tree/master/lib/native  вот родные JAR-файлы, выберите которые вам нужны (android)

у вас отсутствует зависимость от проекта под названиемСобственный доступ к Java (JNA), Если вы внимательно посмотрите на StackTrace, то увидите в конце этого исключения:java.lang.NoClassDefFoundError: com.sun.jna.Platform, Короткий поиск Google закончился в хранилище выше.

Я бы попробовалскачать все связанные банки которые имеют префикс Android. Вам также может понадобиться простоandroid-arm.jar однако это сломало бы это на устройствах с другим процессором, так что добавьте их все.

Ваш ответ на вопрос