Подтвердить что ты не робот

Обновление sdk получило NoClassDefFoundError для zxing

Как решить этот NoClassDefFoundError. Я включил Zxing в свое приложение, все работает нормально. Затем я обновил свой плагин sdk и eclipse, и когда я запускаю проект, в журнале говорится:

03-27 17:27:45.173: E/AndroidRuntime(8917): FATAL EXCEPTION: main
03-27 17:27:45.173: E/AndroidRuntime(8917): java.lang.ExceptionInInitializerError
03-27 17:27:45.173: E/AndroidRuntime(8917):     at java.lang.Class.newInstanceImpl(Native Method)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at java.lang.Class.newInstance(Class.java:1429)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at android.os.Looper.loop(Looper.java:123)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at android.app.ActivityThread.main(ActivityThread.java:4627)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at java.lang.reflect.Method.invokeNative(Native Method)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at java.lang.reflect.Method.invoke(Method.java:521)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at dalvik.system.NativeStart.main(Native Method)
03-27 17:27:45.173: E/AndroidRuntime(8917): Caused by: java.lang.NoClassDefFoundError: com.google.zxing.ResultMetadataType
03-27 17:27:45.173: E/AndroidRuntime(8917):     at records.model.CaptureActivity.<clinit>(CaptureActivity.java:94)`
4b9b3361

Ответ 1

Мне не нужно было размещать jar-библиотеку в активах или lib (s), но только галочку для этой банки в поле "Свойства" → "Путь сборки Java" → "Заказ и экспорт" (он был указан ранее, но не выбран)

Вам может потребоваться выполнить проект > clean после этого, чтобы он вступил в силу! (Спасибо mwengler и Mohamed)

Ответ 2

Перейдите в раздел "Свойства" → "Путь сборки Java" → "Заказ и экспорт"

Затем закажите core.jar в первую позицию и выберите его!

вы должны очистить свой проект после своей работы. Проект → чистый

Это решит проблему

Ответ 3

Вы ссылаетесь на класс com.google.zxing.ResultMetadataType в CaptureActivity.java на линии 94, но определение этого класса не может быть найдено (ClassDefNotFound). Если он не может быть найден, он не должен находиться на пути вашего класса.

На вашем диске, возможно, есть файл .jar, содержащий com.google.zxing.ResultMetadataType (казалось бы, core.jar), поместите это на пути к вашему проекту, чтобы решить эту проблему.

Ответ 4

По какой-то причине ADT больше не включает библиотеки из вашего пути сборки в сгенерированном файле .apk.

Чтобы исправить, создайте папку "libs" в корне вашего проекта (т.е. bin, src, assets, libs) и поместите там файл core.jar. Удалите все другие экземпляры из пути сборки, и все должно работать нормально.

NoClassDefFoundError - Eclipse и Android

Ответ 5

Это сработало для меня (примерно через 8 часов). Ключ в том, что вам нужно создать папку libs в проекте CaptureClient, запустите core.jar, а затем добавьте ссылку на core.jar.

Затем из вашего проекта укажите проект CaptureClient.

Ничего себе, это было примерно в миллион раз сложнее, чем должно было быть!

fooobar.com/questions/33573/...

Ответ 6

Это означает именно то, что он говорит. Вы используете библиотечный код, который вы фактически не включили в свое приложение. Убедитесь, что содержимое core.jar из проекта является частью вашего проекта, как проект библиотеки.

Ответ 7

У меня было то же самое со мной и с другим .jar также после обновления SDK и плагина.

Эндрюс ответил ниже со ссылкой fooobar.com/questions/33573/... с пунктами 3 и 4 для меня.

Ответ 8

У меня была такая же проблема, но я использовал новую конструкцию Gradle и Adroid Studio.

Для меня это решило выйти за пределы Android Studio и сделать чистую и построить из командной строки с помощью gradle:

gradle clean
gradle assembleDebug 

и исключение NoClassDefFound магически ушло

Ответ 9

В моем случае проблема заключалась в том, что у Android Build Tools у меня была версия 18, но вам нужно иметь Android Build Tools версии 19 или новее, потому что мне нужно, чтобы соответствие Eclipse JDK соответствовало 1.7, а не 1.6, как CORE.JAR с использованием Java версии 1.7.

Я бы также предложил посмотреть сообщения в консоли Android в процессе сборки, и это даст вам представление о точной проблеме.

Ответ 10

Добавьте файл core.jar в папку libs вашего проекта android и не добавляйте его в качестве внешнего баннера в пути сборки Java.