RuntimeException: nie można utworzyć wystąpienia aplikacji


97

Kiedy uruchamiam moją aplikację, za każdym razem otrzymuję poniższy wyjątek w moim logcat:

 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

Uwaga: kiedy odinstalowuję aplikację z emulatora i uruchamiam ją, nie ma tego wyjątku, ale kiedy ponownie uruchamiam zainstalowaną aplikację w emulatorze, otrzymuję to. Proszę pomóż.


1
jeśli twój pakiet to android.app.Application, spróbuj zmienić nazwę pakietu, wygląda trochę podejrzanie, wygląda jak pakiet systemowy.
Nie jest puste

Upewnij się również, że aplikacja jest zadeklarowana w manifeście.
dcow,

Rozwiń wiersz spowodowany przez: java.lang.NullPointerException. W zgłoszeniu powinno znajdować się odniesienie do kolejnej linii
Zaid Daghestani,

Nie, nie mam żadnego pakietu, o którym wspomniałeś w mojej aplikacji. Aplikacja jest zadeklarowana w Manifeście jako: <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

W której wersji Androida działa Twoja aplikacja, 4.0?
yorkw

Odpowiedzi:


194

Jest to szczegółowy komunikat o błędzie zgłaszany przez podstawową platformę, gdy dalvik ponownie instaluje plik .apk i próbuje ponownie użyć lub odtworzyć poprzednio otwartą czynność / widok z tego samego pakietu (jeśli nie zamknąłeś poprzednio zainstalowanej aplikacji). Nie ma to nic wspólnego z twoją aplikacją, ponadto jest bardzo mało prawdopodobne, że Twoja aplikacja zostanie zawieszona lub zawieszona z powodu tego szczegółowego komunikatu o błędzie na urządzeniu użytkownika końcowego.

Wygląda na to, że ten pełny dziennik błędów dalvik zdarzał się tylko w systemie Android 4.0, przetestowałem go sam w środowisku uruchomionym Android 3.2 i 2.3.3, gdzie nie można replikować, aby ten komunikat nie był wyświetlany na żadnym z nich. Podobne pytanie zostało omówione wcześniej tutaj i ktoś wypełnił raport o błędzie w narzędziu do śledzenia problemów z Androidem .

Nie sądzę, abyś w tej chwili zbytnio przejmował się tym szczegółowym dziennikiem błędów, jeśli spojrzysz na więcej dzienników przed i po tym czerwonym błędzie w Logcat, możesz zobaczyć całą historię i stwierdzić, że poprzednie otwarte działanie / widok (który są oznaczone jako martwe) zostaną zabite, a nowo zainstalowany ponownie zostanie ostatecznie wyskakujący.


2
Cześć, Nie, moja aplikacja nie uległa awarii ani nie zawiesiła się z powodu tego wyjątku. Działa poprawnie nawet po zgłoszeniu wyjątku. Właśnie zobaczyłem wyjątek w logcatie i nie byłem tego świadomy, dlatego pomyślałem o zapytaniu o to samo. Dzięki za informację, bardzo przydatna.
user182944

3
Otrzymuję to w konsoli programisty aplikacji produkcyjnej. Wydaje się, że dzieje się tak głównie z 4.2, ale widziałem też inne wersje (4.1, 4.4).
Dustin

3
@Dustin, czy rozwiązałeś to? Ponieważ ten wyjątek zgłasza najwyżej 34 / tydzień! i wiele narzekań w wiadomościach użytkowników!
thecr0w

1
Nadal otrzymuję to lokalnie w systemie Android 5.1.1.
Sam,

1
Występuje nawet w wersji 5.1.1. Co się dzieje?
programista Androida

16

Zdaję sobie sprawę, że to bardzo stare pytanie, ale i tak może się przydać. Odkryłem, że kiedy obserwuję ten błąd we własnym rozwoju, jest to spowodowane tym, że poprzednio uruchomione wystąpienie mojej aplikacji nie zostało starannie zamknięte, na przykład przez zamknięcie wątków w tle przed zamknięciem.


Tak, naciśnięcie przycisku Home na moim telefonie, a następnie ponowne uruchomienie usuwa ten błąd również dla mnie.
Agresor

Ma to sens, ale w jaki sposób aplikacja może zamknąć się starannie, gdy jest otwarta przed użytkownikiem, a następnie Android ją zabija, aby ją zaktualizować?
Sam,

Przypuszczalnie Android wywołuje metody onDestroy () w tym scenariuszu, nie? Można mieć taką nadzieję.
JulianSymes

2

Otrzymałem ten sam błąd, gdy próbowałem połączyć się z Internetem za pomocą JSOUP w mojej klasie aplikacji. Było to trudne, ponieważ aplikacja działa na emulatorze, ale nie na rzeczywistym urządzeniu. Okazało się, że właśnie źle użyłem biblioteki JSOUP. Ładowanie strony w nowym wątku rozwiązało mój problem.

Mam nadzieję, że komuś pomogłem.


2

Mam nadzieję, że to komuś pomoże. Przejdź do uruchomionych aplikacji na emulatorze, klikając to:

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

Zamknij aplikację, którą próbujesz zainstalować, a następnie uruchom ją ponownie. NIE ma potrzeby odinstalowywania / ponownego instalowania aplikacji ani czyszczenia projektu.


1

Pomogło mi to w wyczyszczeniu projektu. W Eclipse:
- Projekt -> Wyczyść
Kontroluj ten Projekt -> Kompiluj automatycznie jest SPRAWDZONY.
Jeśli folder gen jest pusty, w folderze res jest błąd. Często błędy w folderze res nie są oznaczone czerwonym krzyżykiem! Powodzenia i pozdrawiam


Nie pomogło mi. Kiedy używam adbdo aktualizacji z jednego z moich pakietów produkcyjnych do innego, ten problem występuje, więc w moim przypadku nie wydaje się on być specyficzny dla IDE.
Sam,

0

W moim przypadku ten błąd pojawia się po zaimportowaniu projektu Android Maven do nowego obszaru roboczego, a folder SRC nie został automatycznie dodany do ścieżki kompilacji.

Kliknij prawym przyciskiem myszy projekt / ścieżkę kompilacji / konfiguruj ścieżkę kompilacji / źródło - sprawdź, czy brakuje źródeł.


0

Mam ten sam problem. Sprzątanie projektu działało dla mnie.

Wybierz projekt przejdź do Project -> Clean


Nie pomogło mi. Kiedy używam adbdo aktualizacji z jednego z moich pakietów produkcyjnych do innego, ten problem występuje, więc w moim przypadku nie wydaje się on być specyficzny dla IDE.
Sam,

0

W moim przypadku logcat pokazuje, że nie mógł znaleźć początkowej aktywności, ale ścieżka Dex była inna, była to „... / data / app / myapp-1” zamiast „... / data / app / myapp” . Usunąłem to, klikając nazwę projektu elcipse „myapp” w oknie eksploratora pakietów. Następnie kliknij prawym przyciskiem myszy, -> refactor-> rename ... Ustawiam nazwę projektu na myapp-1, a następnie -> refactor-> rename ... iz powrotem na „myapp”. Wtedy zadziałało ... jakiś błąd w zaćmieniu?


0

Mam ten sam problem. Odinstalowanie aplikacji, a następnie ponowna instalacja rozwiązało problem.


0

Doświadczyłem tego, importując mój projekt, który był zbudowany z innej maszyny. Po prostu unieważnij pamięci podręczne i uruchom ponownie

Plik> Unieważnij pamięci podręczne / Uruchom ponownie> Unieważnij i uruchom ponownie


0

Zmieniłem applicationId na coś innego w pliku (Module: app) build.gradle, ponownie uruchom aplikację na moim urządzeniu. Następnie cofam zmianę i ponownie uruchamiam aplikację i wszystko działa. Działa na Android Studio 2.3.1 i 4 różnych urządzeniach, które tu mam, od 5.0 do 7.0.


0

Odpowiadam na to pytanie. Gdy użycie gradle clean, gradle installDebugto działa ok!

   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

Proste rozwiązanie:

Po prostu uruchom ponownie emulator lub urządzenie mobilne. Problem zniknął! Przyczyną tego problemu było to, że poprzednia aktywność aplikacji została niesłusznie zatrzymana.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.