RuntimeException: невозможно создать экземпляр приложения.

97

Когда я запускаю свое приложение, каждый раз я получаю следующее исключение в моем журнале:

 04-14 09:29:53.965: W/dalvikvm(1020): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
    04-14 09:29:53.985: E/AndroidRuntime(1020): FATAL EXCEPTION: main
    04-14 09:29:53.985: E/AndroidRuntime(1020): java.lang.RuntimeException: Unable to instantiate application   android.app.Application: java.lang.NullPointerException
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.app.LoadedApk.makeApplication(LoadedApk.java:482)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3938)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.app.ActivityThread.access$1300(ActivityThread.java:123)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1185)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.os.Handler.dispatchMessage(Handler.java:99)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.os.Looper.loop(Looper.java:137)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.app.ActivityThread.main(ActivityThread.java:4424)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at java.lang.reflect.Method.invokeNative(Native Method)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at java.lang.reflect.Method.invoke(Method.java:511)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at dalvik.system.NativeStart.main(Native Method)
    04-14 09:29:53.985: E/AndroidRuntime(1020): Caused by: java.lang.NullPointerException
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:362)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.app.LoadedApk.getClassLoader(LoadedApk.java:305)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.app.LoadedApk.makeApplication(LoadedApk.java:474)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     ... 11 more

Примечание. Когда я удаляю приложение из эмулятора и запускаю его, я не получаю этого исключения, но когда я повторно запускаю установленное приложение в эмуляторе, я получаю это. Пожалуйста помоги.

user182944
источник
1
если ваш пакет - android.app.Application, попробуйте изменить имя пакета, выглядит подозрительно, похоже на пакет System.
Его не пусто
Также убедитесь, что ваше приложение объявлено в Manifest.
dcow
Разверните строку Caused by: java.lang.NullPointerException. Далее в вашем заявлении должна быть ссылка на строку
Заид Дагестани
Нет, у меня нет такого пакета, как вы упомянули в моем заявлении. Приложение объявлено в Манифесте как: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.infy.meetingmanager.activity" android:versionCode="1" android:versionName="1.0" > <application...> <activity android:name=".LoginActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
user182944,
На какой версии Android работает ваше приложение, 4.0?
Йорк,

Ответы:

194

Это подробное сообщение об ошибке, вызываемое базовой структурой, когда dalvik повторно устанавливает файл .apk и пытается повторно использовать или переработать предыдущее открытое действие / представление из того же пакета (если вы еще не закрыли предыдущее установленное приложение). Это не имеет ничего общего с вашим приложением, более того, очень маловероятно, что ваше приложение зависнет или выйдет из строя из-за этого подробного сообщения об ошибке на устройстве конечного пользователя.

Похоже, что этот подробный журнал ошибок dalvik возникает только в системе Android 4.0, я сам тестировал его в среде Android 3.2 и 2.3.3, где вы не можете реплицировать, чтобы это сообщение отображалось ни на одной из них. Подобный вопрос обсуждался ранее здесь, и кто-то заполнил отчет об ошибке в Android Issues Tracker .

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

Йорк
источник
2
Привет, нет, мое приложение не разбилось и не зависло из-за этого исключения, оно работает нормально даже после того, как исключение было выброшено. Я просто увидел исключение в logcat и не знал об этом, поэтому подумал о том же. Спасибо за информацию, очень полезная.
user182944
3
Я получаю это в консоли разработчика производственного приложения. В основном это происходит с 4.2, но я видел и другие версии (4.1, 4.4).
Дастин
3
@ Дастин, ты это решил? Поскольку это исключение сообщает самое большее 34 в неделю! и много жалоб в сообщениях пользователей!
thecr0w 07
1
Я все еще получаю его локально в Android 5.1.1.
Сэм
1
Это происходит даже на 5.1.1. Что происходит?
разработчик Android
16

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

JulianSymes
источник
Да, нажатие кнопки «Домой» на моем телефоне и повторный запуск этой программы также устраняют эту ошибку для меня.
Aggressor
Имеет смысл, но как приложение может аккуратно закрыться, если оно открыто перед пользователем, а затем Android убивает его, чтобы обновить?
Сэм
Предположительно Android вызывает методы onDestroy () в этом сценарии, не так ли? Можно было бы на это надеяться.
JulianSymes 08
2

У меня такая же ошибка, когда я пытался подключиться к Интернету с помощью JSOUP внутри своего класса приложения. Это было сложно, потому что приложение запускалось на эмуляторе, а не на реальном устройстве. Оказалось, что я просто неправильно использовал библиотеку JSOUP. Загрузка страницы в новой теме решила мою проблему.

Надеюсь, я кому-то помог.

Yoda066
источник
2

Надеюсь, это кому-то поможет. Перейдите к запущенным приложениям на вашем эмуляторе, щелкнув это:

введите описание изображения здесь

введите описание изображения здесь

Закройте приложение, которое вы пытаетесь установить, и снова запустите его. НЕ нужно удалять / переустанавливать приложение или очищать проект.

Оджонугва Джуд Очалифу
источник
1

Для меня это помогло очистить Проект. В Eclipse:
- Project -> Clean
Пожалуйста, контролируйте, что Project -> Build Automatically проверяется.
Если после этого gen-папка пуста, в папке res есть ошибка. Часто ошибки в папке res не отображаются красным крестиком! Удачи и привет

Стефан96
источник
Мне не помогло. Когда я использую adbдля обновления с одного из моих производственных apks на другой, возникает эта проблема, поэтому в моем случае она не кажется специфичной для IDE.
Сэм
0

В моем случае эта ошибка появляется после того, как я импортировал проект Android Maven в новую рабочую область, а папка SRC не была автоматически добавлена ​​в путь сборки.

Щелкните правой кнопкой мыши проект / Путь сборки / Настроить путь сборки / Источник - проверьте, отсутствуют ли источники.

Андрей Углев
источник
0

У меня та же проблема. У меня сработала очистка проекта.

Выберите проект, перейдите в Project -> Clean

cnuis2cool
источник
Мне не помогло. Когда я использую adbдля обновления с одного из моих производственных apks на другой, возникает эта проблема, поэтому в моем случае она не кажется специфичной для IDE.
Сэм
0

В моем случае logcat показывает мне, что он не мог найти начальную активность, но путь Dex был другим, это было «... / data / app / myapp-1» вместо «... / data / app / myapp» . Я убедился в этом, щелкнув имя проекта "myapp" в окне проводника пакетов. Затем щелкните по нему правой кнопкой мыши -> рефакторинг-> переименовать ... Я установил имя проекта на myapp-1, а затем -> рефакторинг-> переименовать ... и снова вернулся к «myapp». Потом это сработало ... какая-то ошибка в eclipse?

ldt
источник
0

У меня та же проблема. Удаление моего приложения и его повторная установка решили проблему.

Swati
источник
0

Я испытал это, когда импортировал свой проект, созданный на другой машине. Просто сделайте недействительными кеши и перезапустите

File> Invalidate Caches / Restart> Invalidate and restart

Аниш
источник
0

Я изменил applicationId на что-то другое в файле build.gradle (Module: app), снова запустите приложение на моем устройстве. Затем я отменяю изменение и снова запускаю приложение, и все работает. Он работает на Android Studio 2.3.1 и 4 разных устройствах, которые у меня есть, от 5.0 до 7.0.

Дави Каэтано
источник
0

Встречаюсь с этим вопросом. При использовании gradle clean, gradle installDebugон работает нормально!

   AndroidRuntime  D  Shutting down VM
E  FATAL EXCEPTION: main
E  Process: tv.panda.live.broadcast, PID: 4685
E  java.lang.RuntimeException: Unable to instantiate application tv.panda.live.broadcast.PandaApplication: java.lang.ClassNotFoundException: Didn't find class "tv.panda.live.broadcast.PandaApplication" o
   n path: DexPathList[[zip file "/data/app/tv.panda.live.broadcast-1/base.apk"],nativeLibraryDirectories=[/data/app/tv.panda.live.broadcast-1/lib/arm, /vendor/lib, /system/lib]]
E      at android.app.LoadedApk.makeApplication(LoadedApk.java:572)
E      at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4883)
E      at android.app.ActivityThread.access$1500(ActivityThread.java:178)
E      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1573)
E      at android.os.Handler.dispatchMessage(Handler.java:111)
E      at android.os.Looper.loop(Looper.java:194)
E      at android.app.ActivityThread.main(ActivityThread.java:5691)
E      at java.lang.reflect.Method.invoke(Native Method)
E      at java.lang.reflect.Method.invoke(Method.java:372)
E      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
E      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
E  Caused by: java.lang.ClassNotFoundException: Didn't find class "tv.panda.live.broadcast.PandaApplication" on path: DexPathList[[zip file "/data/app/tv.panda.live.broadcast-1/base.apk"],nativeLibraryDi
   rectories=[/data/app/tv.panda.live.broadcast-1/lib/arm, /vendor/lib, /system/lib]]
E      at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
E      at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
E      at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
E      at android.app.Instrumentation.newApplication(Instrumentation.java:988)
E      at android.app.LoadedApk.makeApplication(LoadedApk.java:567)
E      ... 10 more
E      Suppressed: java.lang.ClassNotFoundException: tv.panda.live.broadcast.PandaApplication
E          at java.lang.Class.classForName(Native Method)
E          at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
E          at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
E          at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
E          ... 13 more
E      Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
андроидмалин
источник
0

Простое решение:

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

Prajwal W
источник