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

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


1
якщо ваш пакет має android.app.Application, спробуйте змінити ім'я пакета, щось виглядає підозріло, схоже на пакет системи.
Не пусте

Також переконайтеся, що ваш додаток оголошено в Manifest.
привіт

Розгорніть Викликано рядком: java.lang.NullPointerException. У вашій заявці повинно бути посилання на рядок нижче за лінією
Zaid Daghestani

Ні, у мене немає жодного пакету, як ви згадали у моїй заяві. Додаток оголошено в Маніфесті як: <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" />
користувач182944

На якій версії Android працює ваш додаток 4.0?
yorkw

Відповіді:


194

Це багатослівне повідомлення про помилку, підняте базовим фреймворком, коли dalvik перевстановлює файл .apk і намагається повторно використовувати або переробити попередню відкриту діяльність / представлення з того ж пакету (якщо ви ще не закрили попередню встановлену програму). Це не має нічого спільного з вашим додатком, до того ж, це малоймовірно, що ваш додаток буде заморожено або збито причиною цього багатослівного повідомлення про помилку на пристрої кінцевого користувача.

Схоже, що цей журнал помилок дальвіка відбувається лише в системі Android 4.0, я сам тестував його на операційних середовищах Android 3.2 та 2.3.3, де ви не можете повторити, щоб відобразити це повідомлення ні на одному з них. Подібне питання вже обговорювалося тут, і хтось заповнив звіт про помилки в програмі Android Issues Tracker .

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


2
Привіт, жодне моє додаток не виходить з ладу і не заморожене через цей виняток, його працює добре навіть після викиду виключення. Я щойно бачив виняток у logcat і не знав про нього, отже, думав запитати те саме. Дякую за інформацію, дуже корисну.
користувач182944

3
Я отримую це в консолі розробника виробничого додатку. Здається, це відбувається в основному з 4.2, але я бачив і іншу версію (4.1, 4.4).
Дастін

3
@Dustin, ти це вирішив? Оскільки ці винятки повідомляють не більше 34 / тиждень! і багато скарг на повідомлення користувачів!
thecr0w

1
Я все ще отримую його локально в Android 5.1.1.
Сем

1
Це відбувається навіть 5.1.1. Що відбувається?
андроїд розробник

16

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


Так, натиснувши кнопку додому на своєму телефоні, а потім запустивши цю функцію, видаляється ця помилка і для мене.
Агресор

Має сенс, але як програма може акуратно закриватися, коли вона відкрита перед користувачем, а потім Android вбиває її, щоб оновити її?
Сем

Імовірно, Android використовує методи onDestroy () у цьому сценарії, ні? Можна було б сподіватися на це.
JulianSymes

2

Я отримував таку ж помилку, коли намагався підключитися до Інтернету за допомогою JSOUP всередині свого класу додатків. Це було складно, адже програма працює на емуляторі, але не на фактичному пристрої. Виявилося, що я просто неправильно використовував бібліотеку JSOUP. Завантаження сторінки в нову тему вирішило мою проблему.

Сподіваюся, я комусь допоміг.


2

Сподіваюся, що це комусь допоможе. Перейдіть до запущених програм на емуляторі, натиснувши це:

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

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

Закрийте додаток, який ви намагаєтесь встановити, а потім запустіть його знову. НЕ потрібно видаляти / перевстановлювати додаток чи чистити проект.


1

Для мене це допомогло очистити Проект. У програмі Eclipse:
- Project -> Clean
Будь ласка, контролюйте, що Project -> Build Automatically перевіряється.
Якщо gen-Folder порожній після цього, у папці res є помилка. Часто помилки у папці res не відображаються червоним хрестом! Удачі та привітання


Не допомогли мені. Коли я використовую adbдля оновлення з одного з моїх виробничих програм на інший, ця проблема трапляється, тому вона не здається специфічною для IDE в моєму випадку.
Сем

0

У моєму випадку ця помилка з’являється після того, як я імпортував проект Android Maven у нову робочу область, і папку SRC не додавали автоматично до шляху збирання.

Клацніть правою кнопкою миші на проект / Шлях побудови / Налаштування контуру збирання / Джерело - перевірте, чи відсутні джерела.


0

У мене така ж проблема. Прибирання проекту працювало на мене.

Виберіть проект, перейдіть до проекту -> Очистити


Не допомогли мені. Коли я використовую adbдля оновлення з одного з моїх виробничих програм на інший, ця проблема трапляється, тому вона не здається специфічною для IDE в моєму випадку.
Сем

0

У моєму випадку logcat покажіть мені, що він не знайшов початкової активності, але Dex Шлях був іншим, це було "... / data / app / myapp-1" замість "... / data / app / myapp" . Я здійснив натискання на назву проекту elcipse "myapp" у вікні Package Explorer. Потім клацніть правою кнопкою миші на ньому - -> refactor-> перейменувати ... Я встановив ім'я проекту на myapp-1, а потім, -> refactor-> перейменувати ... і знову повернувся в "myapp". Тоді це спрацювало ... якась рога клопа в затемненні?


0

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


0

Я пережив це, коли імпортував свій проект, побудований з іншої машини. Просто недійсні кеші та перезапустіть

Файл> Недійсні кеші / Перезавантаження> Недійсні та перезапустіть


0

Я змінив applicationId на щось інше у файлі build.gradle (Модуль: додаток), запустив додаток ще раз на своєму пристрої. Потім я скасовую зміну та запускаю додаток знову, і все працює. Він працює на 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

Просте рішення:

Просто перезавантажте емулятор або мобільний пристрій. І проблеми вже немає! Причина цієї проблеми була пов’язана з тим, що попередня діяльність у додатку була неправильно зупинена.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.