невозможно создать экземпляр приложения-ClassNotFoundException

EDIT: эта проблема еще не решена в другом предложенном вопросе SO

у меня было полностью рабочее приложение на рынке более года, с очень небольшим количеством отчетов о сбоях. Затем недавно я изменил свое приложение в библиотеку, чтобы его можно было включить в несколько разных проектов "обертки". Это было так, что я мог легко сделать различные версии-бесплатные, платные, не google markets, с / без покупки в приложении и т. д.

новый приложение "библиотека+обертка", похоже, работает нормально. Я мог бы запустить его несколько раз, без ошибок. Но через день (когда, предположительно, ОС закрыла некоторые или все действия приложения) я попытался запустить его, и он сообщил

Unable to instantiate application com.mycompany.mygamelibrary.MyGameApplicationClass: java.lang.ClassNotFoundException: com.mycompany.mygamelibrary.MyGameApplicationClass

класс, который он не смог найти, является первым классом, который запускается при запуске программы, MyGameApplicationClass-который расширяет Application. Этот класс является частью библиотеки.

Я подозреваю что-то глупое в одном из двух манифестов файлы.

манифест фантик проект содержит строки...

<application android:icon="@drawable/mygame_icon"
    android:screenOrientation="portrait" android:label="My Game Name"
    android:name="com.mycompany.mygamelibrary.MyGameApplicationClass">

любые идеи, что могло пойти не так?

EDIT: на библиотеку ссылались "правильным способом", как определено ответом yorkw на это так вопрос.

EDIT: Я не могу повторить сбой в данный момент: - (я не знаю, что делает ОС, когда приложение не используется в течение дня или двух.

11 ответов


есть две возможности. Либо у вас, как и у меня, есть орфографическая ошибка в вашем файле манифеста. Попросите коллегу или друга прочитать его, чтобы убедиться, что имя правильное. Или вы неправильно ссылаетесь на проект.

официальный документ описывает, как правильно связать проекты в документация.

почему это сначала кажется, что работает, а затем перестает работать, это немного загадка. Тем не менее, я думаю, что VM, возможно, все еще имел необходимые ссылки готовы для разрешения классов в библиотеке просто отлично. Перезапуск виртуальной машины удалил все эти ссылки и попытка их разрешения не увенчалась успехом.

обновление: что касается изменений в OP: как вы подтверждаете, что вы правильно ссылались на другой проект, вы можете проверить, включен ли проект в APK, просто чтобы быть уверенным. Вы можете переименовать и открыть APK как любой другой архив (.Рар отлично работает для меня). Иногда, это случалось со мной, проект неправильно включен в APK. Очистка рабочей области обычно устраняет проблему, поэтому перезапуск среды IDE может зависеть от того, что вы используете. Например, чтобы вручную провести очистку в Eclipse, используйте Project->Clean... или попробовать Android Tools->Fix Project Properties правой кнопкой мыши на ваш проект.

поскольку вы, похоже, также исправили проблему, перезапустив устройство, возможно, библиотеки были связаны неправильно. Проблема, которую я никогда не видел сам, но как очень распространенная цитата говорит: "Вы пробовали выключить и снова включить?".


Для Android Studio:

Build -->Clean Project

Исправлена проблема.


вы пытались создать новый подкласс MyGameApplicationClass в своем "основном" проекте и установить его в манифесте как класс приложения?


У меня было множество ошибок с Android Studio 3.0 Canary 4, и я исправил их, отредактировав AndroidManifest.xml путем добавления в некотором jibberish к имени приложения. Затем я нажал построить. Очевидно, появилась целая куча новых сообщений об ошибках. Я изменил имя на то, что должно быть, построил приложение, и оно просто запустилось.

иногда, я просто не знаю...

EDIT: просто столкнулся с этой проблемой на Android Studio 3.0 Canary 4 на моем ноутбуке при переключении. Я снова прошел через тот же процесс изменения AndroidManifest.xml-файл, содержащий опечатку, построение и изменение обратно. Это не сработало.

затем я заметил, что мгновенный запуск все еще включен. Зайдя в Настройки (нажав command +, (запятая)) и набрав "instant run", я смог отключить instant run, построил приложение, и ошибка класса не найдена ушла.

сводка шагов для исправления [для ME]

  1. аннулировать кэш / перезапуск
  2. очистить проект
  3. вручную удалить папку сборки (нужно быть в представлении проекта для этого)
  4. сделайте намеренно ошибочное редактирование вашего AndroidManifest.xml-файл, построить приложение, наблюдать ошибки, удалить ошибку редактирования и построить снова
  5. отключить мгновенный запуск

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


может быть его проблема конфигурации пути сборки.Я сделал следующее, чтобы решить проблему.

1.Щелкните правой кнопкой мыши на своем проекте и перейдите к пути сборки Java.

2.Перейдите на вкладку заказ и экспорт.

3.Проверьте частные библиотеки Android и другие библиотеки 3-й части, если вы добавили.

4.Нажмите ok и очистите проект. Надеюсь, это решит проблему.


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

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

Я мог бы решить проблему с

  • правильный порядок пути сборки (как я вижу, вы уже сделали это)
  • Я проверяю на вкладке заказ и экспорт android-suppor-v4.Джар
  • и ключом был Android SDK Managert - > обновление все и (далее) Eclipse->справка->проверить наличие обновлений.

после обновления до последнего плагина android и SDK мое приложение скомпилировано и запущено снова.

Я надеюсь, что это поможет вам!


Я не очень уверен в этом, но это может быть отладка вашей системы.срок действия лицензии хранилища ключей истек, так как она действительна только 365 дней. Вам просто нужно удалить debug.хранилище ключей с компьютера. Отладка.хранилище ключей будет автоматически создано Eclipse при компиляции приложения для Android.


то же самое сообщение ... на этот раз это оказались разные выходные папки для MyApp/gen и MyApp/src в пути сборки (вызванном интеграцией Maven).

снятие флажка "разрешить выходные папки для исходных папок" решило проблему.


У меня была эта проблема в приложении Android, которому нужен класс приложения, который был создан в неправильном пути внутри проекта Android Studio. Когда я переместил файл класса в правильный пакет, он был исправлен.


в моем случае, идентификатор приложения и пакета были несовпадающими. Это должно быть так же, как показано на следующих изображениях...

AndroidManifest.в XML

enter image description here

app / build.Gradle в

enter image description here

в этом случае вы можете увидеть, applicationId и пакета Как же это com.mycompany.mygamelibrary


этот весь процесс работает для меня, чтобы решить исключение класса приложения.

Шаг 1: Откройте Run (window+R) Search -> Prefetch удалить все файлы (некоторые файлы не удалить)

Шаг 2: Откройте Run (window+R) Search - > %temp% Remove all file (некоторые файлы не удаляются)

Шаг 3: Откройте Android Studio - > Build - > Clean Project

или

Выберите файл > аннулировать кэши / перезапуск > аннулировать и перезапустить из Android Studio панель инструментов.

или

закройте и снова откройте проект Android.

или

Перезагрузить Систему