84 votes

Android Studio : Gradle - build fails -- Execution failed for task ':dexDebug' (Échec de l'exécution de la tâche ':dexDebug')

Erreur :

Gradle: Execution failed for task ':vertretungsplan:dexDebug'.
> Failed to run command:
    P:\Android-Studio\sdk\build-tools\18.0.1\dx.bat --dex --output P:\Projekte\VertretungsplanProject\vertretungsplan\build\libs\vertretungsplan-debug.dex P:\Projekte\VertretungsplanProject\vertretungsplan\build\classes\debug P:\Projekte\VertretungsplanProject\vertretungsplan\build\dependency-cache\debug P:\Android-Studio\sdk\extras\android\m2repository\com\android\support\support-v4\18.0.0\support-v4-18.0.0.jar P:\Projekte\VertretungsplanProject\vertretungsplan\libs\commons-io-2.4.jar P:\Projekte\VertretungsplanProject\vertretungsplan\build\exploded-bundles\VertretungsplanProjectLibrariesActionbarsherlockUnspecified.aar\classes.jar
Error Code:
    2
Output:
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/LoginActivity$2.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/LoginActivity$2.class
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/MainActivity$1.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/MainActivity$1.class
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/YQL/YqlVplanParser.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/YQL/YqlVplanParser.class
    3 warnings
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
        at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
        at com.android.dx.command.dexer.Main.run(Main.java:232)
        at com.android.dx.command.dexer.Main.main(Main.java:174)
        at com.android.dx.command.Main.main(Main.java:91)

Structure du projet :

enter image description here

build.gradle (actionbarsherlock)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android-library'

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 11
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            res.srcDirs = ['res']
        }
    }
}

build.gradle (plan de vérification)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/commons-io-2.4.jar')
    compile project(':libraries:actionbarsherlock')
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 11
    }
}

settings.gradle

include ':vertretungsplan', ':libraries:actionbarsherlock'

Comment puis-je corriger cette erreur ?

90voto

Friis1978 Points 1143

La bonne réponse est que certains de vos fichiers jar ne se compilent pas. Vous devriez aller dans votre fichier build.gradle dans votre projet, et regarder dans vos dépendances.

Si vous ne faites qu'importer des fichiers jar, vous pouvez essayer de les supprimer et de les ajouter un par un. Cela vous aidera à déterminer lequel d'entre eux est à l'origine de l'erreur.

Dans mon cas, c'est ce que j'ai fait, et lorsque j'ai importé le dernier, l'application s'est compilée. Je pense donc que le vrai problème était que j'en importais trop à la fois. Mais maintenant, tout fonctionne.

69voto

ironmouse Points 1015

J'ai soudainement rencontré le même problème, alors qu'il n'y avait pas eu de changements notables.

J'ai résolu le problème en supprimant le app/build et laisser gradle construire l'ensemble du projet.

15voto

hussulinux Points 196

Vous devez vérifier si le même JAR est importé à nouveau. Dans mon cas, il y avait une classe dans un jar qui était importée dans un autre jar. Il suffit donc de vérifier si un fichier lib / class n'est pas inclus deux fois dans l'ensemble du projet !

4voto

C4F Points 628

J'ai obtenu le même type d'erreur lorsque j'ai essayé de compiler une bibliothèque d'utils jar dans eclipse en utilisant Java JRE 1.8, et de l'utiliser dans mon /libs/ dans Android Studio 1.1.0.

J'avais paramétré Android Studio pour utiliser JDK1.8.0.

J'ai modifié mon Eclipse pour qu'il fonctionne avec le JRE 1.7, et l'erreur a été corrigée. Eclipse : Fenêtre->Préférences->onglet Java->Compilateur -> Niveau de conformité 1.7. Il vous demandera probablement de changer votre bibliothèque système JRE en jdk1.7.x_x.

Vous devrez peut-être vous assurer de décocher la case "compresser le jar" lors de l'exportation. Je n'ai pas testé si cela avait un effet ou non. Je doute que ce soit lié.

4voto

RunningWheels Points 21

J'ai eu le même problème. Dans mon cas, le problème a commencé après un redémarrage. J'ai fermé mon application, puis j'ai fermé Android Studio (dans mon cas V1.1.0), et enfin un arrêt normal. Après cela, j'ai modifié un fichier java pour ajouter un objet RadioGroup et le problème est apparu.

J'ai résolu mon problème en remplaçant un simple "0" par un "1" dans mon fichier de configuration Gradle, car la cause première du problème a été générée lors du processus d'exécution de Gradle. Auparavant, j'avais la version '1.0.0', puis je l'ai changée en '1.1.0', comme indiqué dans les images.

Emplacement de la configuration Gradle modifiée Location of the Gradle configuration a changed

Emplacement où j'ai pris la bonne version (File -> Settings -> Gradle -> Experimental Location where I took the right version from (File -> Settings -> Gradle -> Experimental

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X