Java beendet mit Nicht-Null-Exit-Wert 2 – Android Gradle

Lesezeit: 6 Minuten

Java beendet mit Nicht Null Exit Wert 2 – Android Gradle
Maverick.pe

Ich erhalte diesen Fehler beim Ausführen meiner Android-App (ich habe sie bereinigt und dann erstellt, aber der Fehler ist immer noch vorhanden)

  • Synchronisation: OK
  • Projekt erstellen: OK
  • Sauber: OK
  • Ausführen: Fehler

Fehler: Ausführung für Aufgabe „:app:dexDebug“ fehlgeschlagen _25\bin\java.exe” wurde mit einem Nicht-Null-Exit-Wert 2 beendet

Meine Gradle-Datei:

apply plugin: 'com.android.application'

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
    applicationId "com.rzr.rzevallosr.miappdepruebas"
    minSdkVersion 19
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

productFlavors {
}

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])

// This library handles authentication and authorization
compile 'com.spotify.sdk:spotify-auth:1.0.0-beta9@aar'
// This library handles music playback
compile 'com.spotify.sdk:spotify-player:1.0.0-beta9@aar'

compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:recyclerview-v7:21.0.+'

compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
compile 'com.squareup.okhttp:okhttp:2.2.0'

compile files('libs/spotify-web-api-android-master-0.1.0.jar')
compile files('libs/okio-1.3.0.jar')
}

BEARBEITEN: Ich habe “compile fileTree (dir: ‘libs’, include: [‘*.jar’])” es hat meine Bibliotheken doppelt kompiliert, also kommentiere ich nur:

//compile 'com.squareup.retrofit:retrofit:1.9.0'
//compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
//compile 'com.squareup.okhttp:okhttp:2.2.0'

//compile files('libs/spotify-web-api-android-master-0.1.0.jar')
//compile files('libs/okio-1.3.0.jar')

und es funktioniert gut.

  • @JaredBurrows Das Problem in meinem Fall war, dass meine App zweimal die Bibliotheken kompilierte. Eine auf “compile fileTree” (kompiliert Ihr gesamtes libs-Verzeichnis) und “compile ****”.

    – Maverick.pe

    30. April 2015 um 21:22 Uhr

  • Kannst du bitte eine Antwort posten und richtig markieren?

    – Jared Burrows

    30. April 2015 um 21:39 Uhr

  • @JaredBurrows fertig. Danke

    – Maverick.pe

    5. Mai 2015 um 23:15 Uhr

  • Bitte lesen Sie meinen Beitrag hier stackoverflow.com/a/33387368/740372

    – Sanjoy Saha

    28. Oktober 2015 um 9:41 Uhr

  • Ich habe den gleichen Fehler, aber meine Gradle-Datei hat nicht so viele Kompilierungen. Bitte helfen Sie. Ich habe diese Frage gepostet: stackoverflow.com/questions/34558251/… Ich bin völlig neu in der Android-Entwicklung.

    – Ayusch

    2. Januar 2016 um 3:54 Uhr

Java beendet mit Nicht Null Exit Wert 2 – Android Gradle
minhazur

Dieses Problem ist sehr wahrscheinlich darauf zurückzuführen, dass das von Android auferlegte 65K-Methodendex-Limit überschritten wird. Dieses Problem kann gelöst werden, indem Sie entweder das Projekt bereinigen und einige nicht verwendete Bibliotheken und Methoden aus Abhängigkeiten in build.gradle entfernen. ODER durch Hinzufügen von Multidex-Unterstützung.

Wenn Sie also Bibliotheken und Methoden behalten müssen, können Sie die Multi-Dex-Unterstützung aktivieren, indem Sie sie in der Gradle-Konfiguration deklarieren.

defaultConfig {        
    // Enabling multidex support.
    multiDexEnabled true
}

Lesen Sie mehr über die Unterstützung und Entwicklung von Multidex Apps mit mehr als 65.000 Methoden hier.

  • schön, dass es dir geholfen hat. @David

    – Minhazur

    27. August 2015 um 15:52 Uhr


  • Vielen Dank es hat mir geholfen

    – Aayushi

    5. September 2015 um 9:36 Uhr

  • Und danach überschreiben Sie die Methode in der Startklasse: @Override protected void attachmentBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(dies); }

    – Mann

    12. Oktober 2015 um 10:03 Uhr


  • Wow, es funktioniert super. Hätte nie gedacht, dass das das Problem sein könnte.

    – Neela

    8. April 2016 um 7:53 Uhr

  • Wenn Sie sehen möchten, was genau den Fehler verursacht, versuchen Sie, Ihr Projekt wie folgt über das Gradle-Terminal zu erstellen ./gradlew assembleDebug --stacktrace --debug . Ich habe diesen Fehler in meinem Fall gesehen com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

    – NecipAllef

    5. November 2016 um 8:48 Uhr

Wie fuge ich eine Aufzahlungsliste zur Android Anwendung hinzu
Amit Tümkur

Für mich war das Problem, dass ich einen unnötigen Complie-Bibliothekscode in build.gradle eingefügt hatte

dependencies {
    compile 'com.google.android.gms:play-services:7.5.0'
}

was über 65.000 Methoden verursachte, also entfernte es, gradle sync, säuberte das Projekt und lief dann erneut und dann wurde dieser Fehler gestoppt. Ich brauchte nur Karten und gcm, also habe ich diese Zeilen eingefügt und das Projekt synchronisiert

compile 'com.google.android.gms:play-services-gcm:7.5.0'
compile 'com.google.android.gms:play-services-location:7.5.0'

Hallo Leute, ich bin erneut auf dieses Problem gestoßen, und diesmal lag es an der Änderung der Version der Build-Tools, und ich musste wirklich Multidex aktivieren. Also habe ich diese build.gradle-Datei meiner App hinzugefügt.

defaultConfig {
    applicationId "com.am.android"
    minSdkVersion 13
    targetSdkVersion 23
    // Enabling multidex support.
    multiDexEnabled true
}

dexOptions {
    incremental true
    javaMaxHeapSize "2048M"
    jumboMode = true
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:multidex:1.0.1'
}

Erstellen Sie eine Klasse, die die Anwendungsklasse erweitert, und fügen Sie diese Methode in die Klasse ein.

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

auch in die OnCreate-Methode aufnehmen

@Override
public void onCreate() {
    MultiDex.install(this);
    super.onCreate();
}

  • Dies ist die beste Lösung, Sie sollten nur die Bibliotheken einschließen, die Sie tatsächlich verwenden.

    – Roisgoen

    19. August 2015 um 16:26 Uhr

  • funktioniert bei mir!! Ändern Sie “compile ‘com.google.android.gms:play-services:7.5.0′” in kompilieren Sie “com.google.android.gms:play-services-identity:8.1.0” kompilieren Sie “com.google.android. gms:play-services-plus:8.1.0”

    – Oskar Calderon

    28. September 2015 um 22:19 Uhr

  • Schön, siehe auch: developer.google.com/android/guides/setup – eine Liste verschiedener individueller Bibliotheken bereitstellen.

    – Ed Manners

    9. Dezember 2015 um 18:38 Uhr


  • @edsappfactory.com Ich habe darauf verwiesen, verwendet und modifiziert.

    – Amit Tumkur

    10. Dezember 2015 um 14:47 Uhr

Java beendet mit Nicht Null Exit Wert 2 – Android Gradle
Vilen

Nur für den Fall, dass jemand immer noch damit zu kämpfen hat und keine Ahnung hat, warum dies passiert und wie es behoben werden kann. Tatsächlich dieser Fehler

Fehler: Ausführung für Aufgabe „:app:dexDebug“ fehlgeschlagen. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Prozess ‘Befehl ‘C:\Program Files\Java\jdkx.x.x_xx\bin\java.exe” beendet mit Ausgangswert ungleich Null 2

kann viele Gründe haben, aber sicherlich nicht etwas, das mit Ihrer JDK-Version zusammenhängt, also verschwenden Sie Ihre Zeit nicht in die falsche Richtung. Dies sind zwei Hauptgründe dafür

  1. Sie haben dieselbe Bibliothek oder JAR-Datei, die mehrere Orte enthält, von denen einige miteinander in Konflikt stehen.
  2. Sie sind dabei, das Methodenlimit von 65.000 zu erreichen oder bereits überschritten zu haben

Der erste Fall kann wie folgt behoben werden: Finden Sie heraus, welche Abhängigkeiten Sie mehrfach eingebunden haben. Führen Sie dazu den folgenden Befehl im Android Studio Terminal aus

gradlew -q dependencies yourProjectName_usually_app:dependencies --configuration compile

Dadurch werden alle Abhängigkeiten zurückgegeben, aber JAR-Dateien, die Sie aus dem lib-Ordner einschließen, versuchen, die mit Sternchen markierte Duplizierung zu beseitigen

compile ('com.facebook.android:facebook-android-sdk:4.0.1'){
    exclude module: 'support-v4'
}

das ist nicht immer möglich, aber in einigen Fällen können Sie es trotzdem tun, nachdem Sie versucht haben, Module auszuschließen, die viele Male enthalten sind, können Sie es so machen

defaultConfig {
   ...
   ...
   multiDexEnabled true
}

Für den zweiten Fall, in dem Sie das Methodenlimit überschreiten, sollten Sie versuchen, es zu minimieren, indem Sie enthaltene Bibliotheken entfernen (Hinweis klingt wie die erste Lösung), wenn dies nicht möglich ist, fügen Sie multiDexEnabled true zu Ihrer Standardkonfiguration hinzu
Dies erhöht das Methodenlimit, ist jedoch aufgrund möglicher Leistungsprobleme nicht die beste Vorgehensweise WICHTIG multiDexEnabled true nur hinzufügen defaultConfig zu NoClassDefFoundErrorist nicht genug in der Tat auf allen Geräten mit Android <5 Lollipop, dies führt zu unerwartetem Verhalten und

Java beendet mit Nicht Null Exit Wert 2 – Android Gradle
. wie man es löst ist hier beschrieben

Maverick.pe Das wusste ich (damals) noch nicht [‘*.jar’]”compile fileTree(dir: ‘libs’, include: )”

//compile 'com.squareup.retrofit:retrofit:1.9.0'
//compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
//compile 'com.squareup.okhttp:okhttp:2.2.0'

//compile files('libs/spotify-web-api-android-master-0.1.0.jar')
//compile files('libs/okio-1.3.0.jar')

kompiliere alles, was die jar-Erweiterung im libs-Ordner hat, also kommentiere (oder lösche) ich einfach diese Zeilen:

1646642591 756 Java beendet mit Nicht Null Exit Wert 2 – Android Gradle
und es funktioniert gut. Danke trotzdem! Mein Fehler.

Alexiscanny

compile fileTree(dir: 'libs', include: ['*.jar'])

Ich hatte das gleiche Problem und habe das Entfernen der unnötigen Bibliothek behoben

  • Ich habe diese Bibliothek entfernt und konnte das Projekt problemlos ausführen.

    Ich habe versucht, die sliderMenu-Klasse hinzuzufügen, und das Entfernen dieser Klasse aus meinem Hauptgradle hat für mich funktioniert. Danke! 🙂

    – Lucas Senechal

1646642591 75 Java beendet mit Nicht Null Exit Wert 2 – Android Gradle
30. April 2016 um 4:27 Uhr

Armin

defaultConfig {
multiDexEnabled true
}

  • Meins wurde gelöst, indem MultiDex für Debug-Builds aktiviert wurde.

    Ich habe versucht, die sliderMenu-Klasse hinzuzufügen, und das Entfernen dieser Klasse aus meinem Hauptgradle hat für mich funktioniert. Danke! 🙂

    – Lucas Senechal

30. April 2016 um 4:27 Uhr Ich lehne eingebettetes JDK (in 32bit) ab, weil es eingebettet ist

JDK ist 64-Bit Klicken Sie mit der rechten Maustaste auf Ihr Projekt -> Öffnen Sie die Moduleinstellung -> SDK-Speicherort -> Deaktivieren Sie Embedded JDk verwenden und legen Sie dann Ihren JDK-Pfad fest, z. B. in Ubuntu

  • /usr/lib/jvm/java-8-openjdk-i386

    Ich denke, das funktioniert, weil eingebettetes JDK 64-Bit ist. Ich hatte das gleiche Problem auf meinem 32-Bit-Rechner.

    – Lukas Novak

  • 30. Mai 2016 um 15:32 Uhr echo $JAVA_HOME Dadurch wurde das Problem auf meinem 32-Bit-Computer behoben.

    für den Weg

    – SANBI-Proben


  • 20. November 2016 um 10:23 Uhr

    Ja, ich wusste, dass es damit zu tun hatte, dass mein Computer 32-Bit war. Danke, Zacharia – hat meinen Tag gerettet!

    – Ilonpilaja

964480cookie-checkJava beendet mit Nicht-Null-Exit-Wert 2 – Android Gradle

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy