web-dev-qa-db-fra.com

Android: Impossible d'instancier l'application

J'ai renommé mon paquet et maintenant je reçois cette étrange erreur:

Unable to instantiate application
app.MyApplication: Java.lang.ClassNotFoundException: 
app.MyApplication in loaderdalvik.system.PathClassLoader

La classe MyApplication est dans Application/app. Le manifeste dit:

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
  xmlns:tools="http://schemas.Android.com/tools"
  package="Application">
<application 
    Android:label="AGG"
    Android:name="app.MyApplication"...

J'ai essayé de redémarrer, propre construit. Cela ne fonctionne pas sur un émulateur ni sur un périphérique réel.

Que se passe-t-il sur Terre? 

19
GuyFawkes

Supposons que le package de base de vos projets soit réellement Application, comme vous l'avez indiqué dans manifest.

Si votre classe MyApplication est à l'intérieur de ce package (la déclaration de package de la classe est package Application;), l'élément application de votre androidManifest.xml doit alors ressembler à 

<application Android:name=".MyApplication" [...]

Si cette classe MyApplication se trouve dans le package Application.app (package Application.app;), dans le manifeste, vous devez écrire:

<application Android:name=".app.MyApplication" [...]

Si vous n'avez pas étendu le Android.app.Application (vous n'avez pas de classe MyApplication extends Android.app.Application), mais souhaitez simplement définir un nom pour votre application, supprimez-le de cet attribut, car il indique au compilateur qu'il existe une extension Application qui devrait être instanciée au lieu du Android.app.Application par défaut.

Enfin, si la première hypothèse est fausse et que, pour une raison quelconque, vous avez modifié la déclaration du package dans l'élément manifest de votre androidManifest, annulez-la ou mettez à jour vos classes afin qu'elles soient dans ce package.

24
rekaszeru

Pour moi, le problème était instantané. Le désactiver a résolu le problème.

Mettra à jour si je trouve une solution pour la réactiver et la faire fonctionner.

9
Umang

cette réponse m'a aidé à renommer vos bibliothèques si vous utilisez le SDK 17 + https://stackoverflow.com/a/10176048/46459

3
realgt

Dans mon cas, j'ai changé le niveau de conformité du compilateur Java de 1,7 à 1,6 et le problème a été résolu.

2
Booyoung Park

assurez-vous que toutes les références de votre manifeste ont été mises à jour pour refléter votre nouveau nom de package.

1
jkhouw1

package="Application" devrait-il être package="MyApplication"?

1
Jason Robinson

Vous devez corriger l'attribut Android:name. Même problème mentionné à ClassNotFoundException après avoir changé le nom de l'application dans Android

1
Femi

Supprimer ces lignes a fonctionné pour moi:

compileOptions {
   sourceCompatibility JavaVersion.VERSION_1_8
   targetCompatibility JavaVersion.VERSION_1_8
}

Mettre à jour:
La raison derrière ce problème est que je n’ai pas installé Java 8 sur mon PC

0
Mays Attari