it-swarm.com.de

java.lang.ClassNotFoundException: Klasse konnte nicht gefunden werden: dexpathlist

Ich arbeite gerade an einem Projekt, in dem ich ausschließlich native ndk verwenden muss. Es hat funktioniert, als ich versuche, ein Beispiel für ein Beispiel aus der Irrlicht-Engine-Quelle auszuführen. Dann versuche ich es in meinem Projekt zu verwenden, indem ich dasselbe Format wie in diesem Beispiel verwende. Aber ich bekam:

03-14 01:40:05.308: E/AndroidRuntime(799): Java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.irrlicht.example1/Android.app.POMActivity}: Java.lang.ClassNotFoundException: Didn't find class "Android.app.POMActivity" on path: DexPathList[[Zip file "/data/app/com.irrlicht.example1-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.irrlicht.example1-2, /system/lib]]

während mein Projekt läuft.

Hier ist meine main.cpp-Datei:

#include <Android/log.h>
#include <jni.h>
#include <Android_native_app_glue.h>
#include "Android_tools.h"
#ifdef _IRR_Android_PLATFORM_
void Android_main(Android_app* app)
{
__Android_log_print(4 , "pom" , "nothing");
}

#endif

in Android.mk: 

LOCAL_PATH := $(call my-dir)/..
IRRLICHT_PROJECT_PATH := $(LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := Irrlicht
LOCAL_SRC_FILES := /home/karthik/Android/Essentials/ogl-es/lib/Android/libIrrlicht.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := HelloWorldMobile1
LOCAL_CFLAGS := -D_IRR_Android_PLATFORM_ -pipe -fno-exceptions -fno-rtti -fstrict-aliasing
LOCAL_C_INCLUDES := -I ../../include -I /home/karthik/Android/Essentials/ogl-es/include -I /home/karthik/Android/json/jsoncpp-src-0.5.0/libs/linux-gcc-4.8 -I /home/karthik/Android/json/jsoncpp-src-0.5.0/include/json 
LOCAL_SRC_FILES :=  Android_tools.cpp main.cpp
LOCAL_LDLIBS := -lEGL -llog -lGLESv1_CM -lGLESv2 -lz -landroid -ldl 
LOCAL_STATIC_LIBRARIES := Irrlicht Android_native_app_glue
include $(BUILD_SHARED_LIBRARY)
$(call import-module,Android/native_app_glue)

Und ich habe in AndroidManifest.xml den Aktivitätsnamen angegeben:

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.irrlicht.example1"
    Android:versionCode="1"
    Android:versionName="1.0">
...
<application Android:icon="@drawable/irr_icon" Android:label="HelloWorldMobile1" Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen" Android:debuggable="true">
        <activity Android:name="Android.app.POMActivity"
        Android:label="HelloWorldMobile1"
        Android:launchMode="singleTask"
        Android:configChanges="orientation|keyboardHidden"
        Android:screenOrientation="portrait"
        Android:clearTaskOnLaunch="true">
        <meta-data Android:name="Android.app.lib_name" Android:value="HelloWorldMobile1" />                     

Was ist der Fehler, den ich hier mache? Ich werde den vollständigen Code posten, falls nötig.

99
Karthik Sivam

Ich habe alle möglichen Optionen ausprobiert, aber das Ergebnis ist Null. Endlich habe ich die richtige Lösung gefunden, die für mich hilfreich ist. Deaktivieren Sie Instant Run. Gehen Sie zu Datei -> Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Instant Run -> Deaktivieren Sie das Kontrollkästchen für Instant Run . Führen Sie Ihre App einmal aus und diese APK-Datei funktioniert einwandfrei.

69
Ashik Abbas

Ich hatte ein ähnliches Problem, hier ist meine Lösung:

  1. Klicken Sie mit der rechten Maustaste auf Ihr Projekt und wählen Sie Eigenschaften.
  2. Wählen Sie aus dem Menü links Java Build Path aus.
  3. Wählen Sie die Registerkarte Bestellen und Exportieren.
  4. Stellen Sie in der Liste sicher, dass die Bibliotheken oder externen Jars, die Sie zu Ihrem Projekt hinzugefügt haben, geprüft sind.
  5. Zum Schluss das Projekt reinigen und ausführen.

Sie können auch this answer überprüfen.

64
mnsalim

Dies scheint in Ihrem Fall ein Problem zu sein. Der relative Pfad Ihrer Aktivität im Manifest ist nicht korrekt:

<activity Android:name="Android.app.POMActivity"

ersetze dies durch:

<activity Android:name=".POMActivity"

oder

<activity Android:name="com.irrlicht.example1.POMActivity"
36
Sushil

Das Löschen der App auf dem Gerät und die Reinigung des Projekts funktioniert für mich

20
V. Kalyuzhnyu

Ich sollte das Problem verstehen, indem ich nur sehe 

dex-Fehler

Aber es dauerte einen halben Tag, um das Problem zu beheben.
Ich behebe das, indem ich die Anweisungen der Android-Entwicklerseite befolge: https://developer.Android.com/studio/build/multidex.html

Fügen Sie zuerst die Datei gradle.build hinzu:

defaultConfig {
    ...
    minSdkVersion 14
    targetSdkVersion 21
    ...

    // Enabling multidex support.
    multiDexEnabled true
}

 dependencies {
     compile 'com.Android.support:multidex:1.0.0'
 }

Erweitern Sie dann die Anwendungsklasse (oder deklarieren Sie die Anwendungsklasse in AndroidManifest.xml oder überschreiben Sie die Funktion attachBaseContext() mit der MultiDexApplication-Klasse, wie auf dem obigen Link beschrieben.

Das ist alles und es hat das Problem gelöst.

19
Akash Bisariya

Diese Ausnahme kann auch auftreten, wenn Sie in Ihrem Layout eine benutzerdefinierte Ansicht haben:

<com.example.MyView
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" />

und Sie ändern den Paketnamen der Ansicht von "com.example" in etwas anderes, aber Sie vergessen, sie auch im Layout zu ändern.

15
petrnohejl

ich löste es mithilfe von: ./gradlew --stop Befehl in Android Studio Terminal. Nachdem Sie diesen Befehl ausgeführt haben, bereinigen Sie das Projekt und erstellen Sie es neu. 

11
Ali Gürelli
  1. Ändern Sie die Reihenfolge der Bibliotheken 
  2. reinigen und neu aufbauen 
  3. arbeitete für mich 

worked for me.

11
crazyjune

Für alle, die Multidex haben, aktivieren Sie dies

inside build.gradle

apply plugin: 'com.Android.application'

Android {
 defaultConfig {
      multiDexEnabled true
  }
 dexOptions {
        javaMaxHeapSize "4g"
    }
}

dependencies {
    compile 'com.Android.support:appcompat-v7:+'
    compile 'com.google.Android.gms:play-services:+'
    compile 'com.Android.support:multidex:1.0.1'
}

schreibe eine Klasse EnableMultiDex wie unten

import Android.content.Context;
import Android.support.multidex.MultiDexApplication;

public class EnableMultiDex extends MultiDexApplication {
    private static EnableMultiDex enableMultiDex;
    public static Context context;

    public EnableMultiDex(){
        enableMultiDex=this;
    }

    public static EnableMultiDex getEnableMultiDexApp() {
        return enableMultiDex;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();

    }
}

und in AndroidManifest.xml schreibe dieses className in Application Tag

 <application
    Android:name="YourPakageName.EnableMultiDex"
    Android:hardwareAccelerated="true"
    Android:icon="@drawable/wowio_launch_logo"
    Android:label="@string/app_name"
    Android:largeHeap="true"
    tools:node="replace">
10
Manohar Reddy

Probieren Sie einfach Projekt reinigen & Projekt neu erstellen .

9

Ich habe dieses Problem mehrmals erlebt und sie werden alle durch Deaktivieren von Instant Run gelöst.

8
mohnage7

Wenn das Projekt zuvor kompiliert wurde, löschen Sie einfach den Cache mithilfe der folgenden Anweisungen: 

./gradlew clean

oder 

./gradlew cleanBuildCache

oder für Fenster 

gradlew cleanBuildCache

https://developer.Android.com/studio/build/build-cache.html

6
Romuald

Wir brauchen keine angepasste Application class, die MultiDexApplication erweitert. Stattdessen können wir dies auf AndroidManifest.xml haben.

<application
Android:name="Android.support.multidex.MultiDexApplication"
Android:hardwareAccelerated="true"
Android:icon="@mipmap/ic_launcher"
Android:label="@string/app_name"
Android:supportsRtl="true"
Android:theme="@style/AppTheme">

Und zusammen mit diesem auf build.gradle (Modul: app),

defaultConfig {
      ...

      // Enabling multidex support.
      multiDexEnabled true
}

dependencies {
     ... 
     compile 'com.Android.support:multidex:1.0.2'
}

Vielen Dank.

5
Abdul Gaffar

Reinigen Sie einfach Ihr Projekt. Für mich geht das.

5

Wenn Sie multidex verwenden, versuchen Sie, Ihre Anwendungsklasse mit MultiDexAppication anstelle von Application zu erweitern, und überschreiben Sie die für Android erforderliche Methode.

@Override
protected void attachBaseContext(Context base)
{
    super.attachBaseContext(base);
    MultiDex.install(BaseApplication.this);
}

und in Abhängigkeiten hinzufügen

compile 'com.Android.support:multidex:1.0.1'

Ich bekam diesen Absturz nur auf Samsung Lollipop-Geräten und diese Lösung hat für mich funktioniert.

dexOptions {
     preDexLibraries false
}

Ich poste diese Antwort hier, da diese Frage derzeit das am höchsten bewertete Suchergebnis bei Google für diesen Absturz ist und keine der obigen Antworten für mich funktioniert hat. 

3
blinkmacalahan

In meinem Fall entstand dieses Problem wegen Kotlin. In meinem vorhandenen Code gab es eine Klasse, die Kotlin geschrieben wurde. Ich baute die App, installierte sie und sobald die erste Aktivität geöffnet war, stürzte die App ab. Im Logcat wurde dieser Fehler angezeigt. Ich habe dann meine Kotlin-Version von der Kotlin-Website in einer App-Gradl-Datei aktualisiert. Baue die App erneut und es hat gut funktioniert.

3
Harry .Naeem

nachdem ich die angegebenen Antworten ausprobiert hatte, fand ich einen weiteren Grund für die gleiche Ausnahme. Ich musste die Bibliothek, die ich manuell verwende, zu meiner Hauptbibliothek hinzufügen

Right click on my main library > 
Properties > 
Android > 
Go to the very bottom of the screen and click (Add) > 
Select my other library that caused the crash >
Apply

vor dieser Lösung habe ich das "Fix-Projekt-Setup" aus der .Java-Datei in Eclipse verwendet. Dies funktionierte jedoch nicht. Daher musste ich es hier manuell hinzufügen und es funktionierte

3

Ändern Sie einfach Ihren Ordnernamen von lib in libs.

Dann sehen Sie einige Fehler in Ihrem Projekt, um dieses Problem zu beheben. Klicken Sie auf Projekt>

Properties > Java Build Path > libraries:

Entfernen Sie die gesamte Bibliothek mit den roten Markierungen und apply > ok > danach bereinigen Sie Ihr Projekt . TADA sehen die Magie :)

3
Walking Code

Die folgende Lösung hat für mich funktioniert ...

Ich habe alles oben genannte probiert, aber meine App noch nicht zum Laufen gebracht ... Ich habe auf der neuesten Version von Gradle 4+ und Android Studio eine reagierende App ausgeführt.

Ich hatte das Problem, dass, wenn ich reaktives Lauf-Android laufen lasse, es mit dem Problem fehlschlug, dass es nicht in der Lage ist, die MainApplication-Klasse zu finden ... d. H. ClassNotFoundException

Ich konnte das Problem beheben, als ich meine gradle.properties auf den Compiler D8 aktualisiert habe.

Ich fügte hinzu:

Android.enableD8 = true

zu meinen gradle.properties

Dokumentdetails hier: https://Android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html

2
nkadu1

Ich bekomme das Problem nach dem Update von Android Studio 2.1 auf 2.3. Aufgrund der sofortigen Funktion wird meine Anwendung nicht ausgeführt, wenn ich die apk von der Ausgabe kopiere und in die sdcard lege .. Für dieses Problem baue ich die apk von build Option apk bauen in Android Studio.

1
user2306383

Ashik abbas answer (deaktiviere Instant Run) arbeite für mich, aber ich brauche Instant Run, endlich habe ich eine Lösung gefunden, die für mich hilfreich ist .. Einfach minifyEnabled deaktivieren Gehen Sie zu build.gradle (Module: app) im Block debug und deaktivieren Sie minifyEnabled:

debug {
            minifyEnabled false

        }
1
hofs

Ich hatte den gleichen Fehler und einige Antworten ließen mich bei einer Neueinsteigerfrage in die Irre führen. Ich hatte das falsche Paket in meiner benutzerdefinierten Ansichtsbeschreibung wie unten. Ich hoffe es hilft jemandem.

<com.my.app.wrong.package.MyActivity
    Android:id="@+id/myActivity"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_marginLeft="16dp"
    Android:layout_marginRight="16dp"
    Android:paddingTop="16dp"
    Android:paddingBottom="8dp"
    Android:gravity="left" />
1
lauksas

Wenn Sie minifyEnabled und shrinkResources in Ihrer App-Gradlendatei auf true gesetzt haben. Sie müssen die folgende Zeile in der proguard-rules.pro-Datei hinzufügen

-Steep-Klasse com.Ihr Paketname. ** {*; }

weil minification einige wichtige klassen in unserer apk-datei entfernt hat. 

1
Naveen Kumar M

Wenn Sie diese Fehlermeldung erhalten, nachdem Sie einige Abstufungsabhängigkeiten entfernt haben, überprüfen Sie Ihr Manifest und stellen Sie sicher, dass Sie alle Einträge entfernt haben, die dieser Abhängigkeit entsprechen.

1
dees91

In meinem Fall habe ich die alte Namespace-Bibliothek verwendet, während mein Projekt unter Verwendung von androidx one eingerichtet wurde.

Die Lösung bestand darin, die Android.support.design.widget.BottomNavigationView-Komponente durch die richtige zu ersetzen, um aus der Support-Bibliothek zu entkommen: com.google.Android.material.bottomnavigation.BottomNavigationView.

0
Artik

Ein möglicher Grund wäre der falsche Pfad der Aktivität in der Datei Apps AndroidManifest.xml. Registrieren Sie die Aktivität in Ihrer AndroidManifest.xml mit dem vollständigen relativen Pfad wie unten.

<activity Android:name="<full_path>.ActivityName" />
0
Akki

Ich war mit demselben Problem konfrontiert. Ich habe alles versucht, was für einen Tag möglich ist, aber es hat nichts funktioniert. Die Abhängigkeit, die Probleme verursachte, war die Verwendung von Sdk, Sdk und Sdk. Ich habe ein Bibliotheksmodul für das Projekt erstellt, alle Quellen kopiert und die Sdk-Versionen mit den Anwendungs-Sdk-Versionen abgeglichen. Und zum Schluss funktionierte es wie ein Zauber.

0
PK Gupta

ich hatte dieses Problem schon einmal und die Kommentare hier haben in der Vergangenheit geholfen, diesmal jedoch nicht. Ich überprüfte meine Proguard-Konfiguration und ich entfernte die folgenden Zeilen und dann hat es funktioniert, damit Proguard etwas mit diesem Fehler zu tun haben kann:

 -optimizationpasses 5
        -overloadaggressively
        -repackageclasses ''
        -allowaccessmodification
        -dontskipnonpubliclibraryclassmembers
0
j2emanue

Sie können auch Klasse wird nicht gefunden, wenn Android das Ziel "Unmarshalling" hat oder Android E/Paket ﹕ Klasse wird nicht gefunden, wenn "Unmarshalling" (nur unter Samsung Tab3) } angezeigt wird, jedoch haben mir keine Ratschläge aus diesen Themen geholfen . Ich habe sogar eine Parcelable-Klasse neu geschrieben.

0
CoolMind

Für mich erschien das Problem, nachdem ich eine signierte APK erstellt hatte. Um das Problem zu beheben, habe ich eine neue, debug-apk mit Run/Build APK erstellt. Danach funktioniert Run (cmd + r) wieder ohne diesen Fehler. 

0
passatgt