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 содержит правильный путь для действия.

Здесь будет очень благодарна за любую помощь. Большое спасибо.


person MrByte    schedule 17.05.2013    source источник


Ответы (5)


Может быть дубликатом этого.

Попробуйте перейти в Проект -> Свойства -> Путь сборки Java -> Порядок и экспорт и убедитесь, что частные библиотеки Android отмечены для вашего проекта и для всех других проектов библиотек. вы используете. После этого очистите все проекты и посмотрите, что произойдет.

person Krauxe    schedule 17.05.2013
comment
Да, это тоже решило эту проблему для меня. Похоже, что содержимое вашей папки libs / теперь квази-компилируется в частных библиотеках Android ... кроме случаев, когда вы обновляетесь до нового ADT, вам нужно проверить это в свойствах проекта, иначе оно не будет включено в компиляцию. Android Studio вот и мы - person JMRboosties; 17.05.2013
comment
Спасибо, сработало. Просто вопрос, что происходит, когда мы проверяем какую-то конкретную библиотеку? Даже SDK используется для компиляции, но он не проверяется. - person Basit Ali; 24.05.2013
comment
(пожалуйста, помогите мне с java.lang.NoClassDefFoundError: my.package.AMainActivity $ UpdateTask) мой adt равен 21, при этом частные библиотеки Android проверены по умолчанию, но все еще так много исключений. Почему? - person thecr0w; 05.12.2014
comment
Кто-нибудь знает, как исправить это в настройке IntelliJ / Android Studio Gradle? - person Will Calderwood; 28.03.2015
comment
@WillCalderwood Вы нашли решение для Android Studio? - person user1483208; 24.04.2015
comment
@ user1483208 Боюсь, что нет. Теперь я всегда делаю чистку перед тем, как делать релизную сборку, которая, кажется, улучшила ситуацию. Однако это не решено полностью. - person Will Calderwood; 24.04.2015

@Krauxe Большое спасибо за этот ответ!

Однако в моем Eclipse (Версия: 3.7.2) мне пришлось использовать слегка скорректированный подход.

  1. Проект - Свойства - Путь сборки Java - Порядок и экспорт
  2. Установите флажок Частные библиотеки Android (также для проектов использованных библиотек).
  3. Проект - Очистить ... - Очистить все проекты
person droide_91    schedule 25.05.2013

Здесь нам пришлось добавить папку src в качестве исходной папки. Почему-то пропала привязка.

  1. Щелкните правой кнопкой мыши папку src.
  2. Путь сборки -> Использовать как исходную папку
person Julio Rodrigues    schedule 18.12.2013
comment
Вау, я так долго пытался понять это. Я продолжал находить ответы, данные выше, но ваше решение - это то, что мне действительно нужно. Я хотел обновить свое приложение после долгого перерыва, так что, возможно, поэтому настройки немного изменились (как досадно!). Спасибо. : D - person Tony Wickham; 04.03.2014

У меня такая же проблема. Решением было изменить папку вывода на bin / classes.

  1. Щелкните правой кнопкой мыши проект
  2. Выбрать свойства
  3. Перейти к пути сборки Java> Источник
  4. Установите папку вывода по умолчанию в / bin / classes

Привет, Мартин

person user3399247    schedule 09.03.2014

Если вы попробовали все ответы, проблема все еще не устранена, возможно, имя действия не соответствует имени пакета в 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.

person SalutonMondo    schedule 22.12.2014