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?
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.
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.
cette réponse m'a aidé à renommer vos bibliothèques si vous utilisez le SDK 17 + https://stackoverflow.com/a/10176048/46459
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.
assurez-vous que toutes les références de votre manifeste ont été mises à jour pour refléter votre nouveau nom de package.
package="Application"
devrait-il être package="MyApplication"
?
Vous devez corriger l'attribut Android:name
. Même problème mentionné à ClassNotFoundException après avoir changé le nom de l'application dans Android
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