Wenn Smartphone als Device ausgewählt - ClassNotFound Exception

T

txbarth

Ambitioniertes Mitglied
0
Hallo,
ich kann nach ein paar Problemen meine App wieder im Emulator testen mit API Level 16, 19, 22 und 23. Erst mit API Level 23 sind meine Dialoge kaputt (anderes Thema). Wenn ich in Android Studio mein angeschlossenes Smartphone ebenfalls mit API Level 23 auswähle, stürzt die App ab, weil die Klasse der MainActivity nicht im Klassenpfad gefunden werden kann.

Code:
FATAL EXCEPTION: main
 Process: de.domain.poolinfo.l5poolinfo, PID: 25530
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{de.domain.poolinfo.l5poolinfo/de.domain.poolinfo.l5poolinfo.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "de.domain.poolinfo.l5poolinfo.MainActivity" on path: DexPathList[[zip file "/data/app/de.domain.poolinfo.l5poolinfo-2/base.apk"],nativeLibraryDirectories=[/data/app/de.domain.poolinfo.l5poolinfo-2/lib/arm, /vendor/lib, /system/lib]] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2395)

[...]

Caused by: java.lang.ClassNotFoundException: Didn't find class "de.domain.poolinfo.l5poolinfo.MainActivity" on path: DexPathList[[zip file "/data/app/de.domain.poolinfo.l5poolinfo-2/base.apk"],nativeLibraryDirectories=[/data/app/de.level5.poolinfo.l5poolinfo-2/lib/arm, /vendor/lib, /system/lib]]


de.domain.poolinfo.l5poolinfo.MainActivity ist aber der volllständige Klassenname.

Ich habe natürlich nach ähnlichen Problemen gesucht (Suchbegriffe: android didn't find class on path dexpathlist).

In der Manifest steht die Klasse so, wie es Andriod Studio über die Vorlage selbst festgelegt hatte.
<activity
android:name=".MainActivity"

Und ansonsten liest man oft die Antwort.
  1. Right click on your project and select Properties.
  2. Select Java Build Path from the menu on the left.
  3. Select the Order and Export tab.
  4. From the list make sure the libraries or external jars you added to your project are checked.
  5. Finally, clean your project & run.
Dazu finde ich allerdings die Menüs nicht. Im Emulator mit API 23 funktioniert es, auf dem Smartphone mit API 23 nicht. Ich habe an Konfigurationsdateien noch nicht herumgefummelt. Muss ich vielleicht irgendwas löschen, damit was neu generiert wird?
 
Moin ,

bekanntes Problem bei der Beta version

a) AS beenden, ggf reboot des rechners
b) Clean Project
c) Rebuild Project

Habe ich dir aber schon gestern geschrieben


lg
Stefan
 
Das habe ich gemacht, das Problem besteht weiterhin. Aber eine HelloWorld App funktioniert. In der Manifest ist die Activity aber genauso angegeben:
<activity android:name=".MainActivity" und package="de.domain.www.myapplication">
 
Auf Anhieb kann ich nur orakeln , dass du mal was "vernünftiges" als package angeben solltest
(woher hast du denn die komische url ???)

Bsp :
package de.txbarth.my_firstapp;

und dann bitte immer unterschiedliche

package de.txbarth.my_secondapp;
package de.txbarth.my_thirdapp;
 
Zuletzt bearbeitet:
Ich baue gerade die App noch einmal auf, ausgehend von der Vorlage "Basic Activity". Die lässt sich auch auf dem Smartphone starten.
 
Wie sieht das komplette Manifest aus?
Irgendetwas in dieser Form müsste dort stehen:
Code:
<activity
            android:name="de.domain.poolinfo.l5poolinfo/de.domain.poolinfo.l5poolinfo.MainActivity"
            android:label="@string/app_name"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 
Die App wird nun nach dem Neuaufbau auch auf dem Smartphone ausgeführt. Ich habe aber wirklich alles aus dem alten Projekt übernommen. Und es steht auch wieder in der Manifest: <activity android:name=".MainActivity" Du schreibst, es müsste heißen:
de.domain.poolinfo.l5poolinfo/de.domain.poolinfo.l5poolinfo.MainActivity. Warum eigentlich zweimal den Klassenpfad. Vollständiger Klassenpfad ist de.domain.poolinfo.l5poolinfo.MainActivity. Wenn ich diesen jetzt angebe, wie ich es auch einmal bei der Problemsuche ohne Erfolge ausprobiert hatte, funktioniert es nun ebenfalls. Irgendwas stimmte nicht und bevor ich lange weiter suche, habe ich es neu aufgebaut. Ich hatte dann auf einmal das Problem, dass in drei Source-Dateien illegale Zeichen reingekommen sind, die ich mit AS nicht löschen konnte. Ich dachte schon, ich müsste nun Zeile für Zeile abschreiben. Ich habe dann notepad++ installiert und konnte mit UTF-8 ohne BOM die drei Dateien richtig konviertieren. Irgendwie habe ich den Eindruck, dass ich alle Fehler abbekomme, die auftreten können. Echt nicht lustig :)

Eine andere Frage: nach meinen Tests auf dem Smartphone habe ich gesehen, dass die App dann mehrmals installiert war. Ich hatte eigentlich angenommen, dass beim Neustart die bereits installierte App überschrieben wird, wenn sich am Namen oder so nichts ändert.
 
de.domain.poolinfo.l5poolinfo/de.domain.poolinfo.l5poolinfo.MainActivity. Kopierfehler. :(

Und sonst reicht auch ./ . Dann muss oben im Manifest aber unter "package" der Pfad richtig eingegeben sein.

Frage:
Hast du unterschiedliche package Pfade benutzt. Im System wird die App unter ihrem package Name abgespeichert. Eine App wird nur ersetzt, wenn das package übereinstimmt.
 

Ähnliche Themen

SaniMatthias
Antworten
19
Aufrufe
961
swa00
swa00
Manny87
  • Manny87
Antworten
11
Aufrufe
166
swa00
swa00
R
  • raller
Antworten
15
Aufrufe
549
DOT2010
DOT2010
Zurück
Oben Unten