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

NoClassDefFoundError - Eclipse и Android

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

Здесь сообщение:

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

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

<uses-library android:name="com.google.android.maps" />

Ответ 5

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

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

Ответ 6

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

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

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

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

Ответ 7

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

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

Ответ 8

То же самое работало для меня: Свойства → Путь сборки Java → "Заказ и экспорт" Интересно, почему это не делается автоматически? Я думаю, что некоторые настройки отсутствуют. Также это произошло для меня после обновления SDK.

Ответ 9

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

Ответ 11

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

Мне удалось решить эту проблему, удалив проект, а затем добавив его снова, используя резервную копию источника, которую я имел.

Ответ 12

У меня была такая же ошибка с ADT22. Решено, что он проверяет "частные библиотеки Android" в свойствах → путь сборки Java → порядок и экспорт. Если вы используете какие-либо проекты библиотек, то для них тоже нужно сделать.

Ответ 13

Все существующие ответы не работают для меня, потому что мой случай немного отличается. Мне потребовалось несколько часов, чтобы заставить его работать. Я использую Eclipse.

Мой проект андроида включает в себя еще один обычный проект java 1.6, для которого нужен сторонний файл jar. Трюк:

  • включить jar в обычный Java-проект для его компиляции (только), не проверять его на вкладке "Заказ и экспорт"
  • также скопируйте этот файл jar в папку "libs" проекта Android, чтобы он был доступен во время выполнения

Надеюсь, что это поможет тем, у кого похожие сценарии, подобные моим.

Ответ 14

иногда вам нужно взять весь внешний проект как библиотеку, а не только банку:

моя проблема решена путем добавления всего проекта (в моем случае google-play-services_lib) в качестве библиотеки, а не только банку. шаги к нему (из @style answer):

  • File- > New- > Другое
  • Выберите проект Android
  • Выберите "Создать проект из существующего источника"
  • Нажмите кнопку "Обзор..." и перейдите к желаемый проект
  • Готово (теперь проект панели действий в рабочей области)
  • Щелкните правой кнопкой мыши свой проект → Свойства
  • В разделе Android- > Library щелкните Добавить
  • выберите недавно добавленный проект → Ok

Ответ 15

Иногда это случается из-за того, что вы не включаете jar, в котором у вас есть зависимость, с тегом "uses-libary" в вашем AndroidManifest.xml.

Кроме того, убедитесь, что он должен находиться внутри тега "application".

Привет,

Рави

Ответ 16

У меня возникла эта проблема, и это было вызвано не "экспортом" библиотеки. Иск был только потому, что файлы .class для некоторых классов недоступны при упаковке APK. Время компиляции будет отлично работать без экспонирования

В моем случае я использовал класс "CusrsorAdapter" и в разделе "JavaBuildPath- > Order and Export" я не проверял поддержку V4 jar.Once, выбранная проблема исчезла.

Чтобы убедиться, что вы получаете ошибку noClassDefFound из-за вышеуказанной причины, пожалуйста, проверьте свой logacat, вы увидите неизвестную ошибку суперкласса во время выполнения.

Ответ 17

Я пробовал разные вещи, и причиной ошибки в моем случае был конфликт между maps.jar и Google Api в Java Build Path- > Libraries. Итак, когда я удалил maps.jar, он работал нормально.

Привет,

Вахиб

Ответ 18

убедитесь, что ваш файл jar находится в каталоге libs вашего проекта, в котором вы используете новую версию ADT с вашим eclipse.

Ответ 19

У меня возникла одна и та же проблема... Чтобы исправить это, я просто удалил своих личных подписчиков Android в "путь сборки" и нажал ok... и когда я открыл op "путь сборки", снова Eclipse добавила их сам снова, а затем он работал у меня;)...

Ответ 20

Я провел два дня, пытаясь решить эту проблему после обновления ADT. наконец, мне посчастливилось получить этот пост здесь:

https://code.google.com/p/android/issues/detail?id=55304

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

Ответ 21

Если вы предпочитаете знать, какие файлы обходные пути связаны с тем, что я нашел. Просто измените файл .classpath на

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="gen"/>
    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>

Замените файл .classpath во всех проектах библиотеки и в главном проекте Android. Файл .classpath находится в корневой папке проекта eclipse. Не забудьте добавить свои собственные записи в classpath, если у вас есть (сравните с текущей версией .classpath).

Я считаю, что это тот же результат, что и в меню eclipse, описанном выше как компонентный пользователь (Eclipse/Configure Build Path/Order and Export).

Ответ 22

Решение здесь работало для меня. Это вопрос импорта библиотеки в папку libs, а затем изменения файла build.gradle, а затем очистки с помощью gradlew.

Ответ 23

Если вы измените свой заказ и экспортируете его в путь сборки проекта, эта ошибка не будет возникать. Другой способ его достижения - через .classpath в папке проекта.

Ответ 24

Попробуйте следующее: -

Шаг 1

Добавьте все библиотеки для создания pat в Eclipse (это означает, что все библиотеки, на которые ссылаются библиотеки)

Шаг 2

Удалите файл R.java и снова создайте проект. Не беспокойтесь, R.java автоматически воссоздается.

Холод:)

Ответ 25

Как я понял, ваш проект не показывает ошибок, потому что вы включили Jar. Но Jar не будет использоваться, когда ваш проект будет "экспортирован" на устройство. Попробуйте это

Проект → Свойства

Путь и порядок сборки Java

[✔] Ваша баня

Ответ 26

Это происходит очень часто для меня.

В прошлый раз, когда это произошло, я вспомнил, что был вызван переключением Eclipse ADT (специальной версии Google) в Android Studio и переходом назад. Я в основном пробовал все методы, которые я могу найти в stackoverflow, который не работал у меня.

В конце концов, я снова получил приложение (не более NoCalssDeffoundError), переключив мою IDE на оригинальный Eclipse (Kepler) с помощью ADT.