невозможно создать экземпляр приложения-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
правой кнопкой мыши на ваш проект.
поскольку вы, похоже, также исправили проблему, перезапустив устройство, возможно, библиотеки были связаны неправильно. Проблема, которую я никогда не видел сам, но как очень распространенная цитата говорит: "Вы пробовали выключить и снова включить?".
вы пытались создать новый подкласс 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]
- аннулировать кэш / перезапуск
- очистить проект
- вручную удалить папку сборки (нужно быть в представлении проекта для этого)
- сделайте намеренно ошибочное редактирование вашего AndroidManifest.xml-файл, построить приложение, наблюдать ошибки, удалить ошибку редактирования и построить снова
- отключить мгновенный запуск
опять же, я не хочу намекать, что это исправит ошибка каждого, но теперь я использовал некоторую комбинацию этих шагов на двух разных машинах (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
app / build.Gradle в
в этом случае вы можете увидеть, 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.
или
Перезагрузить Систему