Android java.lang.NoClassDefFoundError
У меня есть проект Android в Eclipse IDE, который работал. После некоторого импорта и тестов я получаю сообщение об ошибке: java.lang.NoClassDefFoundError
.
В моем проекте у меня есть два пакета: основной и второй с некоторыми классами.
Когда я пытаюсь создать экземпляр объекта из второго класса пакета в основном классе активности, я получаю эту ошибку.
Вот logcat:
FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.neurospeech.wsclient.MDPIforEditorialBoard
at milos.mdpi.Journals.<init>(Journals.java:41)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1409)
at android.app.Instrumentation.newActivity(Instrumentation.java:1040)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1777)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1893)
at android.app.ActivityThread.access$1500(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4389)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
at dalvik.system.NativeStart.main(Native Method)
Найден решение моей проблемы:
Решение можно найти здесь: http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17
Ответы
Ответ 1
Недавно вы обновили плагин eclipse android (adt r17)? Тогда следующая ссылка может помочь:
Как исправить classdefnotfounderror с помощью adt-17
Обновление: Прошел год с тех пор, как возник вопрос. Я сохраню ссылку, потому что даже в 2013 году это помогает некоторым людям решить эту проблему. Но, пожалуйста, позаботьтесь о том, что вы делаете, см. Комментарий Эрики ниже.
Текущая версия ADT - 22, я рекомендую использовать самую последнюю версию.
Ответ 2
Отредактируйте путь сборки в этом порядке, это сработало для меня.
Убедитесь, что /gen
находится перед /src
![enter image description here]()
Ответ 3
Я исправил проблему, просто добавив в нее частные библиотеки основного проекта:
Project Properties->Java Build Path->Order And Export
И убедитесь, что Android Private Libraries отмечены.
Скриншот:
![enter image description here]()
Убедитесь, что отмечены google-play-services_lib.jar
и google-play-services.jar
. Очистите проект и запустите его, а исключение classNotfound исчезнет.
Ответ 4
![Imaage]()
Перейдите в раздел "Заказ и экспорт из свойств проекта" и убедитесь, что вы включили необходимые банки в экспорт, это сделало это для меня
Ответ 5
Я столкнулся с этой проблемой несколько раз, открывая старые проекты, которые включают в себя другие библиотеки Android. Что для меня работает:
переместите Android на верхнюю часть вкладки "Заказ и экспорт" и отмените выбор.
Да, это действительно имеет значение. Может быть, мне пора перерезать ADT для Android Studio!
Ответ 6
Вы также можете получить эту ошибку, если попытаетесь включить банку, которая была скомпилирована с помощью jdk 1.7 вместо 1.6.
В моем случае я понял это, пытаясь упаковать свое приложение с помощью сценариев Ant, предоставленных SDK, вместо ADT, и я заметил эти ошибки, которые ADT мне не показывал:
[dex] Pre-Dexing libjingle_peerconnection.jar -> libjingle_peerconnection-2f82c9bf868a6c58eaf2c3b2fe6a09f3.jar
[dx]
[dx] trouble processing:
[dx] bad class file magic (cafebabe) or version (0033.0000)
[dx] ...while parsing org/webrtc/StatsReport$Value.class
[dx] ...while processing org/webrtc/StatsReport$Value.class
Я перекомпилировал свою банку с помощью jdk 1.6 и исправлена ошибка.
Ответ 7
Попробуйте Project -> Properties -> Java Build Path -> Order & Export
И Подтвердить частные библиотеки Android проверяются для вашего проекта и для всех других проектов библиотек, которые вы используете в своем приложении.
Ответ 8
После проверки пути сборки Java, затем добавьте строки кода в файл манифеста.
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />