webentwicklung-frage-antwort-db.com.de

Android: Anwendung kann nicht instanziiert werden

Ich habe mein Paket umbenannt und jetzt bekomme ich diesen seltsamen Fehler:

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

Die MyApplication-Klasse befindet sich in Application/app. Das Manifest sagt:

<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"...

Ich habe einen Neustart versucht, sauber aufgebaut. Is funktioniert weder auf einem Emulator noch auf einem echten Gerät.

Was zu Hölle ist hier los? 

19
GuyFawkes

Nehmen wir an, dass das Basispaket Ihres Projekts wirklich Application ist, wie Sie es in manifest angegeben haben.

Wenn sich Ihre MyApplication-Klasse in diesem Paket befindet (die Paketdeklaration der Klasse lautet package Application;), sollte das application-Element in Ihrem androidManifest.xml aussehen 

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

Wenn sich diese MyApplication-Klasse innerhalb des Application.app-Pakets (package Application.app;) befindet, sollten Sie in das Manifest schreiben:

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

Wenn Sie die Android.app.Application-Klasse nicht erweitert haben (Sie haben keine MyApplication extends Android.app.Application-Klasse), möchten Sie Ihrer Anwendung nur einen Namen zuweisen, entfernen Sie dieses Attribut, da dem Compiler mitgeteilt wird, dass eine Application-Erweiterung vorhanden ist, die instanziiert werden soll anstelle des Standardwerts Android.app.Application.

Wenn die erste Annahme falsch ist und Sie aus irgendeinem Grund die Paketdeklaration im Element manifest Ihres Android-Manifests geändert haben, machen Sie sie rückgängig oder aktualisieren Sie Ihre Klassen so, dass sie in diesem Paket enthalten sind.

24
rekaszeru

Für mich war das Problem der sofortige Lauf. Durch das Deaktivieren wurde das Problem behoben.

Wird aktualisiert, wenn ich eine Lösung für das erneute Aktivieren und das Funktionieren finde.

9
Umang

diese Antwort hat mir geholfen. Benennen Sie Ihre Bibliothek grundsätzlich in libs um, wenn Sie SDK 17 + https://stackoverflow.com/a/10176048/46459 verwenden.

3
realgt

In meinem Fall habe ich den Kompatibilitätsgrad des Java-Compilers von 1.7 auf 1.6 geändert und das Problem wurde behoben.

2
Booyoung Park

stellen Sie sicher, dass alle Verweise in Ihrem Manifest so aktualisiert wurden, dass sie Ihren neuen Paketnamen widerspiegeln.

1
jkhouw1

Sollte package="Application"package="MyApplication" sein?

1
Jason Robinson

Sie müssen das Android:name-Attribut korrigieren. Das gleiche Problem wurde unter ClassNotFoundException erwähnt, nachdem der Name der App in Android geändert wurde

1
Femi

Das Entfernen dieser Zeilen funktionierte für mich:

compileOptions {
   sourceCompatibility JavaVersion.VERSION_1_8
   targetCompatibility JavaVersion.VERSION_1_8
}

Update:
Der Grund für dieses Problem ist, dass ich Java 8 nicht auf meinem PC installiert habe

0
Mays Attari