NoClassDefFoundError - Eclipse и Android - PullRequest
       38

NoClassDefFoundError - Eclipse и Android

194 голосов
/ 12 февраля 2010

У меня возникла проблема при попытке запустить приложение для Android, которое до добавления второй внешней библиотеки в путь сборки работало нормально. С тех пор как я добавил jar Scoreninja, теперь я получаю NoClassDefFoundError при попытке запустить приложение.

Вот сообщение:

02-11 21:45:26.154: ERROR/AndroidRuntime(3654): java.lang.NoClassDefFoundError: com.scoreninja.adapter.ScoreNinjaAdapter

Поскольку все сценарии сборки генерируются инструментами Android (?), Я не уверен, что еще я могу сделать, кроме очистки и восстановления или перезапуска затмения (я уже попробовал все три). Кто-нибудь знает, как я могу это исправить?

Ответы [ 27 ]

234 голосов
/ 29 марта 2012

У меня была эта проблема после обновления ADT.

Я сохранял все мои JAR-файлы в папке с именем "lib" и добавлял jar-файлы в путь сборки обычным способом Eclipse. Это работало нормально до моего обновления.

После моего обновления я получал NoClassDefFoundError для класса, который, как я мог видеть, был включен в jar (проверяя классы ReferencedLibraries).

Решением было удалить мои файлы jar из пути сборки и переименовать мою папку "lib" в "libs". Это соглашение муравья, и похоже, что новый ADT находит и включает библиотеки в файл .apk. Как только я это сделал, все работало нормально.

100 голосов
/ 13 апреля 2012

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

68 голосов
/ 12 февраля 2010

Добавление внешнего jar-файла в путь сборки просто добавляет jar-файл в ваш пакет, но он не будет доступен во время выполнения.

Чтобы баночка была доступна в время выполнения , вам необходимо:

  • Положите банку в папку assets
  • Включите эту копию jar в путь сборки
  • Перейти на вкладку экспорта в том же всплывающем окне
  • Установите флажок напротив вновь добавленной банки
48 голосов
/ 11 мая 2011

У меня было это для MapActivity. Сборки в Eclipse получают NoClassDefFound в отладчике.

Забыл добавить библиотеку в манифест, внутри <Application>...</Application> элемент

<uses-library android:name="com.google.android.maps" />
27 голосов
/ 27 января 2012

Я изменил порядок включенных проектов (Eclipse / Configure Build Path / Order and Export).Я переместил два моих зависимых проекта в верхнюю часть списка «Заказ и экспорт».Это решило проблему "NoClassDefFoundError".

Это странно для меня.Я не слышал о важности порядка включения библиотек и проектов.Android + Eclipse это весело :) 1003 *

15 голосов
/ 17 октября 2010

Я не уверен, связано ли это, или вы все еще ищете ответ, но я наткнулся на эту тему, пытаясь исследовать ту же ошибку (но, возможно, по разным причинам).

Я не смог найти каких-либо решений в Интернете, но ответ на похожую тему заставил меня задуматься и понял, что, возможно, мне просто нужно перестроить (или очистить) проект.

В Eclipse перейдите в Project => Clean. Выберите ваш проект, и Eclipse, похоже, исправит его сам. Для меня это решило проблему.

Надеюсь, это поможет.

13 голосов
/ 30 августа 2012

Я столкнулся с той же проблемой. Причина в том, что библиотека, которую я пытался использовать, была скомпилирована со стандартным JDK 7.

Я перекомпилировал его с параметрами -source 1.6 -target 1.6, и он работал нормально.

7 голосов
/ 15 апреля 2012

То же самое сработало для меня: Свойства -> Путь сборки Java -> «Порядок и экспорт» Интересно - почему это не делается автоматически? Я думаю, что некоторые настройки отсутствуют. Также это случилось со мной после обновления SDK.

3 голосов
/ 27 ноября 2012

Джон О'Коннор прав с этой проблемой. Проблема остается с установкой ADT 17 и выше. Нашел ссылку для исправления ошибки:

http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

3 голосов
/ 12 июня 2012

Щелкните правой кнопкой мыши папку вашего проекта, найдите Свойства в пути сборки Java и выберите файлы jar, которые вы видите. Это сработало для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...