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óż.

user182944
źródło
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.

yorkw
źródło
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.

JulianSymes
źródło
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.

Yoda066
źródło
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.

Ojonugwa Jude Ochalifu
źródło
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

stefan96
źródło
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ł.

Andrey Uglev
źródło
0

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

Wybierz projekt przejdź do Project -> Clean

cnuis2cool
źródło
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?

ldt
źródło
0

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

swati
źródło
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

Anish
źródło
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.

Davi Caetano
źródło
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
androidmalin
źródło
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.

Prajwal W
źródło