RuntimeException: impossibile creare un'istanza dell'applicazione


97

Quando eseguo la mia applicazione, ogni volta che ricevo la seguente eccezione nel mio 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

Nota: quando disinstallo l'app dall'emulatore e la eseguo, non ottengo questa eccezione ma quando riesco a eseguire nuovamente l'applicazione installata nell'emulatore, ottengo questo. Per favore aiuto.


1
se il tuo pacchetto è android.app.Application, prova a cambiare il nome del pacchetto, sembra un po 'sospetto, sembra il pacchetto di sistema.
Non è vuoto

Assicurati anche che l'app sia dichiarata nel file manifest.
dcow

Espandere la riga Caused by: java.lang.NullPointerException. Dovrebbe esserci un riferimento a una riga nella domanda più in basso
Zaid Daghestani

No, non ho nessun pacchetto come quello che hai menzionato nella mia domanda. L'app è dichiarata nel Manifest come: <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

Su quale versione di Android è in esecuzione la tua app, 4.0?
yorkw

Risposte:


194

Questo è un messaggio di errore dettagliato generato dal framework sottostante quando dalvik reinstalla il file .apk e tenta di riutilizzare o riciclare l'attività / vista aperta precedente dallo stesso pacchetto (se non hai ancora chiuso l'app installata in precedenza). Non ha nulla a che fare con la tua app, inoltre, è molto improbabile che la tua app si blocchi o si blocchi a causa di questo messaggio di errore dettagliato sul dispositivo dell'utente finale.

Sembra che questo registro degli errori dettagliato di Dalvik sia accaduto solo sul sistema Android 4.0, l'ho testato io stesso sull'ambiente in esecuzione Android 3.2 e 2.3.3, dove non è possibile replicare per ottenere questo messaggio mostrato su nessuno dei due. Una domanda simile è stata discussa prima qui e qualcuno ha compilato una segnalazione di bug in Android Issues Tracker .

Non penso che dovresti preoccuparti troppo di questo log di errori dettagliato al momento, se guardi più log prima e dopo questo errore rosso in Logcat, puoi vedere la storia completa e scoprire che l'attività / vista aperta precedente (che sono contrassegnati come stato morto) vengono uccisi e quello appena reinstallato viene visualizzato alla fine.


2
Ciao, No, la mia app non si è bloccata né si è bloccata a causa di quell'eccezione, funziona bene anche dopo che è stata generata l'eccezione. Ho appena visto l'eccezione nel logcat e non ne ero a conoscenza, quindi ho pensato di chiedere lo stesso. Grazie per le informazioni, molto utili.
user182944

3
Lo ricevo nella console per sviluppatori di un'applicazione di produzione. Sembra succedere principalmente con la 4.2, ma ho visto anche altre versioni (4.1, 4.4).
Dustin

3
@ Dustin, hai risolto questo? Poiché questa eccezione segnala al massimo 34 / settimana! e molte lamentele nei messaggi degli utenti!
thecr0w

1
Lo sto ancora ricevendo localmente in Android 5.1.1.
Sam

1
Si verifica anche su 5.1.1. Cosa sta succedendo?
sviluppatore Android

16

Mi rendo conto che è una domanda molto vecchia, ma può essere utile comunque. Ho scoperto che quando osservo questo errore nel mio sviluppo, è dovuto al fatto che l'istanza della mia app in esecuzione in precedenza non si chiudeva in modo ordinato, ad esempio chiudendo i thread in background prima di uscire.


Sì, premendo il pulsante Home sul mio telefono, quindi eseguendolo di nuovo, questo errore viene rimosso anche per me.
Aggressore

Ha senso, ma come può un'app chiudersi ordinatamente quando è aperta di fronte all'utente e poi Android la uccide per aggiornarla?
Sam

Presumibilmente Android invoca i metodi onDestroy () in quello scenario, no? Si spera così.
JulianSymes

2

Ho ricevuto lo stesso errore quando ho provato a connettermi a Internet con JSOUP all'interno della mia classe di applicazione. È stato complicato, perché l'applicazione viene eseguita sull'emulatore ma non sul dispositivo effettivo. Si è scoperto che ho usato la libreria JSOUP in modo sbagliato. Il caricamento della pagina in un nuovo thread ha risolto il mio problema.

Spero di aver aiutato qualcuno.


2

Spero che questo aiuti qualcuno. Vai alle app in esecuzione sul tuo emulatore facendo clic su questo:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Chiudi l'app che stai tentando di installare e quindi eseguila di nuovo. NON è necessario disinstallare / reinstallare l'app o pulire il progetto.


1

Per me ha aiutato a pulire il progetto. In Eclipse:
- Project -> Clean
Please control that Project -> Build Automatically is CHECKED
Se la cartella gen è vuota dopo di ciò, c'è un errore nella cartella res. Spesso gli errori nella cartella res non vengono mostrati dalla croce rossa! Buona fortuna e saluti


Non mi ha aiutato. Quando utilizzo adbper eseguire l'aggiornamento da uno dei miei apk di produzione a un altro, si verifica questo problema, quindi nel mio caso non sembra specifico per l'IDE.
Sam

0

Nel mio caso questo errore viene visualizzato dopo aver importato il progetto Android Maven nella nuova area di lavoro e la cartella SRC non è stata aggiunta automaticamente al percorso di compilazione.

Fare clic con il pulsante destro del mouse sul progetto / Percorso di creazione / Configura percorso di creazione / Sorgente - controlla se mancano le fonti.


0

Ho lo stesso problema. La pulizia del progetto ha funzionato per me.

Seleziona il progetto vai su Progetto -> Pulisci


Non mi ha aiutato. Quando utilizzo adbper eseguire l'aggiornamento da uno dei miei apk di produzione a un altro, si verifica questo problema, quindi nel mio caso non sembra specifico per l'IDE.
Sam

0

Nel mio caso logcat mi ha mostrato che non riusciva a trovare l'attività iniziale, ma il percorso Dex era diverso, era "... / data / app / myapp-1" invece di "... / data / app / miaapp" . Ho controllato questo facendo clic sul nome del progetto elcipse "miaapp" nella finestra Esplora pacchetti. Quindi fai clic destro su di esso, -> refactor-> rinomina ... ho impostato il nome del progetto su myapp-1, e poi, -> refactoring-> rinomina ... e di nuovo su "miaapp". Poi ha funzionato ... un po 'di bug in Eclipse?


0

Ho lo stesso problema. Disinstallare la mia app e reinstallarla ha risolto il problema.


0

L'ho sperimentato quando ho importato il mio progetto che è stato costruito da una macchina diversa. Basta invalidare le cache e riavviare

File> Invalidate Caches / Restart> Invalidate and restart


0

Ho cambiato l'ID applicazione in qualcosa di diverso nel file build.gradle (Modulo: app), esegui di nuovo l'app sul mio dispositivo. Quindi, annullo la modifica ed eseguo nuovamente l'app e tutto funziona. Funziona su Android Studio 2.3.1 e 4 diversi dispositivi che ho qui, da 5.0 a 7.0.


0

Incontro questa domanda. Quando si usa gradle clean, gradle installDebugfunziona bene!

   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

Soluzione semplice:

Riavvia semplicemente l'emulatore o il dispositivo mobile. E il problema è sparito! Il motivo di questo problema era dovuto a una precedente attività dell'app interrotta per errore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.