Android - невозможно выполнить операцию - исключение класса не найдено после обновления до ADT 22
Недавно я обновил ADT до версии 22.
После того, как я это сделал, я впервые получил сообщение об ошибке с моей библиотекой поддержки (которая была опиралась на другой проект библиотеки).
После того как я скопировал библиотеку поддержки в свой проект и очистил все мои проекты, я продолжаю получать следующие ошибки при попытке запустить приложение:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.d.d/com.d.d.MainActivity}: java.lang.ClassNotFoundException: com.d.d.MainActivity
(Я переименовал реальное имя пакета в com.d.d)
Но то, что заставляет меня подозревать, что это является причиной изменений в библиотеке поддержки, - это следующая строка:
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
Это держит меня подозрительно, потому что, когда я уже возился с библиотекой поддержки, я получил много ошибок, связанных с чем-то dex.
Излишне говорить, что AndroidManifest содержит правильный путь для активности.
Любая помощь будет высоко оценена здесь.
Большое спасибо.
Ответы
Ответ 1
Может быть дубликат этого.
Попробуйте выполнить Проект → Свойства → Путь сборки Java → Заказ и Экспорт и убедитесь, что Частные библиотеки Android проверяются для вашего проекта и для всех других проектов библиотеки, которые вы используете. Очистить все проекты потом и посмотреть, что произойдет.
Ответ 2
@Krauxe Большое спасибо за предоставление этого ответа!
Однако мне пришлось использовать слегка настроенный подход в моем Eclipse (Версия: 3.7.2).
- Проект - Свойства - Путь сборки Java - Заказ и экспорт
- Проверьте частные библиотеки Android (также для используемых проектов библиотеки)
- Проект - Очистить... - Очистить все проекты
Ответ 3
Здесь нам нужно было добавить папку src в качестве исходной папки. По какой-то причине привязка исчезла.
- Щелкните правой кнопкой мыши папку src.
- Путь сборки → Использовать в качестве исходной папки
Ответ 4
У меня была та же проблема. Решение заключалось в том, чтобы изменить выходную папку на bin/classes.
- Щелкните правой кнопкой мыши по проекту
- Выберите "Свойства"
- Перейти к пути сборки Java > Источник
- Установить папку вывода по умолчанию для /bin/classes
Привет,
Мартин
Ответ 5
если вы пробовали все ответы, все еще возникли проблемы, то, вероятно, имя активности не соответствует имени пакета в AndroidManifest.xml.
например, ваш xml.
<activity
android:name="com.tony.HomeActivity"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
но HomeActivity фактически находится в пакете com.tony.ui.HomeActivity.