web-dev-qa-db-fra.com

Java a terminé avec une valeur de sortie non nulle 2 - Android Gradle

Je reçois cette erreur en exécutant mon application Android (je l'ai nettoyée puis reconstruite, mais l'erreur est toujours présente)

  • Sync: OK
  • Make Project: OK
  • Propre: OK
  • Run: Erreur

Erreur: L'exécution a échoué pour la tâche ': app: dexDebug' .com.Android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: La commande de processus 'C'\Program Files\Java\jdk1.7.0 _25\bin\Java.exe '' terminé avec une valeur de sortie 2 différente de zéro

Mon fichier de grade:

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')
}

EDIT: Je n'ai pas vu "compile fileTree (dir: 'libs', include: ['* .jar'])" il compilait deux fois mes bibliothèques, donc je viens de commenter:

//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')

et ça marche bien.

134
Maverick.pe

Je ne savais pas (à ce moment-là) que "compile fileTree (dir: 'libs', inclure: ['* .jar'])" compiler tout ce qui a l'extension jar sur le dossier libs, donc je commentez (ou supprimez) ces lignes:

//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')

et ça marche bien. Merci quand même! Ma faute.

17
Maverick.pe

Ce problème est probablement dû au dépassement de la limite de 65 000 méthodes imposée par Android. Ce problème peut être résolu en nettoyant le projet et en supprimant certaines bibliothèques et méthodes inutilisées des dépendances dans build.gradle, OU en ajoutant le support multidex. .

Donc, si vous devez conserver des bibliothèques et des méthodes, vous pouvez activer le support multi-dex en le déclarant dans la configuration de gradle.

defaultConfig {        
    // Enabling multidex support.
    multiDexEnabled true
}

Vous pouvez en savoir plus sur le support et le développement multidex applications avec plus de 65K méthodes ici .

205
minhazur

Pour moi, le problème était que j'avais mis un code de bibliothèque complie inutile dans build.gradle

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

qui causait plus de 65k méthodes, donc supprimé, gradle sync, projet nettoyé, puis exécuté à nouveau et puis cette erreur s'est arrêtée. J'avais juste besoin de cartes et de gcm, donc je mets ces lignes et le projet synchronisé

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

Salut les gens, j'ai encore rencontré ce problème et cette fois-ci, c'était à cause de l'évolution de la version des outils de génération et il me fallait vraiment activer multidex..Ainsi, j'ai ajouté le fichier build.gradle de mon application ..

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'
}

Et créez une classe qui étend la classe Application et incluez cette méthode dans la classe.

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

inclure également dans la méthode OnCreate aussi

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

Juste au cas où quelqu'un aurait encore du mal à comprendre cela et ne comprendrait pas pourquoi cela se produit et comment le réparer. En fait cette erreur

Erreur: L'exécution a échoué pour la tâche ': app: dexDebug'. > com.Android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: processus 'commande' C:\Program Files\Java\jdkx.x.x_xx\bin\Java.exe '' terminé valeur de sortie non nulle 2

peut avoir de nombreuses raisons mais certainement pas quelque chose lié à votre version de JDK alors ne perdez pas votre temps dans la mauvaise direction. Ce sont deux raisons principales pour que cela se produise

  1. Vous avez la même bibliothèque ou le même fichier jar inclus à plusieurs endroits et certains sont en conflit les uns avec les autres.
  2. Vous êtes sur le point ou avez déjà dépassé la limite de méthode de 65 000

Le premier cas peut être corrigé comme suit: Recherchez les dépendances que vous avez incluses plusieurs fois. Pour ce faire, exécutez la commande suivante dans Android terminal de studio

gradlew -q dependencies yourProjectName_usually_app:dependencies --configuration compile

toutes les dépendances seront renvoyées, mais les fichiers jar inclus dans le dossier lib essaient de supprimer les doublons marqués d’un astérisque (*). Ce n’est pas toujours possible, mais vous pouvez toujours le faire. Après cela, essayez d’exclure les modules sont inclus plusieurs fois, vous pouvez le faire comme ça

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

Dans le second cas, lorsque vous dépassez la suggestion de limite de méthode, essayez de la minimiser en supprimant les bibliothèques incluses (la note ressemble à la première solution) si aucun moyen de le faire n’ajoutez multiDexEnabled true à votre defaultConfig.

defaultConfig {
   ...
   ...
   multiDexEnabled true
}

cela augmente la limite de la méthode mais ce n’est pas la meilleure chose à faire en raison de problèmes de performances possibles IMPORTANT n’ajoutant que multiDexEnabled true à defaultConfig n'est pas suffisant en fait sur tous les appareils exécutant Android <5 Lollipop, il en résultera un comportement inattendu et NoClassDefFoundError. comment le résoudre est décrit ici

32
Vilen

J'ai eu le même problème et j'ai corrigé la suppression de la bibliothèque qui était inutile

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

J'ai supprimé cette bibliothèque et je pouvais exécuter le projet sans problème.

9
Alexiscanny

Le mien a été résolu en activant multiDex pour les versions de débogage.

defaultConfig {
multiDexEnabled true
}
6
Armin

Je rejette le JDK intégré (en 32 bits) car intégré le JDK est en 64 bits

Cliquez avec le bouton droit de la souris sur votre projet -> Paramètre du module ouvert -> Emplacement du SDK -> Décochez la case Utiliser incorporé JDk définit ensuite votre chemin JDK, par exemple sous Ubuntu / usr/lib/jvm/Java-8-openjdk-i386

6
ugali soft

Problème possible: Vous avez dépassé la limite des méthodes de 65k, vous avez peut-être ajouté une bibliothèque ou plusieurs méthodes avant que le problème ne survienne?

5
Artem Zinnatullin

Si vous avez déjà mis à jour votre SDK et que vous utilisez également google-play-services, vous devez prendre en charge la dépendance car il existe une sorte de conflit avec:

Suivez les instructions ci-dessous: compilez 'com.google.Android.gms: play-services: +' à remplacer par compile 'com.google.Android.gms: play-services: 6.5.87'

Remarque: Ici, '6.5.87' est la version du service google-play-service. J'espère que cela aidera..

3
Maddy

Dans mon cas, le problème était que la nouvelle bibliothèque (dépendance de rangée) que j'avais ajoutée s'appuyait sur d'autres dépendances et que deux de ces dépendances sous-jacentes étaient en conflit/en conflit avec certaines dépendances d'autres bibliothèques/dépendances de mon script de construction. Plus précisément, j'ai ajouté Apache Commons Validator (pour la validation du courrier électronique) et deux de ses dépendances (Apache Commons Logging et Apache Commons Collections) étaient en conflit avec celles utilisées par Robolectric (car différentes versions des mêmes bibliothèques étaient présentes dans mon chemin de compilation). J'ai donc exclu les versions en conflit des dépendances (modules) lors de l'ajout de la nouvelle dépendance (le Validator):

compile ('commons-validator:commons-validator:1.4.1') {
    exclude module: 'commons-logging'
    exclude module: 'commons-collections'
}

Vous pouvez voir les dépendances de votre (vos) module (s) Gradle (vous n’avez peut-être qu’un module dans votre projet) à l’aide de la commande Gradle suivante (j’utilise le wrapper Gradle créé pour vous si vous avez créé votre projet dans Android Studio/Idée Intellij). Exécutez cette commande dans le répertoire racine de votre projet:

./gradlew: YOUR-MODULE-NAME: dépendances

Après avoir ajouté ces directives exclude et réessayé, une erreur duplicate file pour NOTICE.txt est utilisée par certaines bibliothèques communes Apache telles que Logging et Collections. J'ai dû exclure ce fichier texte lors de l'emballage. Dans mon build.gradle, j'ai ajouté:

packagingOptions {
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/NOTICE.txt'
}

Il s'est avéré que la nouvelle bibliothèque (la Validator) peut fonctionner avec des versions légèrement plus anciennes de ses dépendances/modules (qui sont déjà importées dans mon chemin de construction par une autre bibliothèque (Robolectric)). C’est le cas de cette bibliothèque spécifique, mais d’autres bibliothèques utilisent peut-être la dernière API des dépendances sous-jacentes (dans ce cas, vous devez essayer de voir si les autres bibliothèques qui dépendent du module/de la dépendance en conflit sont capables de fonctionner avec le version plus récente (en excluant l'ancienne version du module/dependecy sous les entrées de ces bibliothèques)).

2
Javad Sadeqzadeh

Je pense que c'est des conflits de fichier .jar dans votre projet.

J'ai supprimé Android-support-v4.jar du dossier libs et son fonctionnement !!!

si votre projet donne une erreur, vérifiez votre fichier build.gradle

dépendances {

}

2
Samir Mangroliya

Dans mon cas, j'ai eu cette erreur quand il y a 2 ou plusieurs bibliothèques en conflit (même bibliothèque mais versions différentes). Vérifiez le build.gradle de votre application dans le bloc des dépendances.

1
Phuc Tran

La mise à jour de mon Java SDK vers la dernière version 1.7.0_79 et la mise à jour de SDK Location sous Project Structure ont résolu le problème.

1
TheIT

Mon problème était qu'en plus d'avoir

com.Android.build.api.transform.TransformException: com.Android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: processus 'commande' /Library/Java/JavaVirtualMachines/jdk1.X.X_XX .jdk/Sommaire/Accueil/bin/Java '' terminé avec une valeur de sortie non nulle 2

J'ai aussi eu cette trace:

Erreur de traduction non capturée: Java.lang.IllegalArgumentException: déjà ajoutée: Lcom/mypackage/ClassX;

Le problème était que j'ajoutais la même classe dans deux bibliothèques différentes. En supprimant le fichier class/jar de l’une des bibliothèques, le projet s’exécute correctement.

1
mromer

Pour moi, j'ajoutais toutes les dépendances du Playstore

compiler 'com.google.Android.gms: play-services: 8.4.0'

Mais je n'avais besoin que de Google Map, je l'ai donc rendue plus précise et l'erreur a été résolue.

compiler 'com.google.Android.gms: play-services-maps: 8.4.0'

1
Ajji

Il y a deux alternatives qui fonctionneront à coup sûr:

  1. Nettoyez votre projet puis construisez.

Si la méthode ci-dessus n'a pas fonctionné, essayez la suivante.

  1. Ajoutez les éléments suivants au fichier build.gradle au niveau de l'application

    defaultConfig {   
    
    multiDexEnabled true
    
    }
    
1
Udit Kapahi

Cette erreur est due à l'utilisation de plus de nombres de libraries.in mon cas 'compiler' com.google.Android.gms: play-services-9.4.0 'a provoqué cette erreur.Pour éviter cette erreur, utilisez les librairies nécessaires.par exemple si vous voulez pour utiliser Maps dans votre application. Utilisez ensuite la compilation 'com.google.Android.gms: play-services-maps: 9.4.0'. En ajoutant la dépendance aux services de Google Play, spécifiez les bibliothèques nécessaires uniquement.par défaut, toutes les bibliothèques sont incluses.

0
Rajesh.k

J'ai eu la même erreur après la conversion de mon projet en Kotlin. Mon problème était que mon emplacement de jre avait été changé pour un chemin invalide au cours du processus (je me demande pourquoi cela pourrait arriver ... m'a fait perdre du temps). Corrigé en faisant ceci:

File > Project Structure > SDK Location 

Décocher l'option Use embedded JDK qui pointait vers une ancienne installation de JDK et sélectionner celle qui convient:

/home/my_user/jdk1.8.0_101

Après avoir changé cela, l'erreur a disparu

0
voghDev

TRAVAILLE POUR MOI:)

j’ai mis à niveau le Java vers la dernière version 8 précédemment, il était alors 7, puis cliquez sur OPEN MODULE SETTING en cliquant avec le bouton droit de la souris sur proj , puis a changé le chemin jdk en/usr/lib/jvm/Java-8-Oracle , le nouveau Java 8 installé. Et redémarrer le studio

vérifier dans/usr/lib/jvm pour Java 8 nom du dossier

J'utilise ubuntu enter image description here

0
jayant singh

Si vous voulez voir ce qui cause exactement l'erreur, essayez de construire votre projet via un terminal graduel, comme ceci ./gradlew assembleDebug --stacktrace --debug. J'ai vu l'erreur suivante dans mon cas com.Android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

Cela s'est produit lorsque j'essayais d'intégrer Google Maps à mon projet. Pour y remédier, j'ai simplement vérifié les bibliothèques que j'inclusais

compile 'com.google.Android.gms:play-services:9.8.0'

Je l'ai simplement changé pour

compile 'com.google.Android.gms:play-services-maps:9.8.0'

et le problème était parti

0
NecipAllef

Vous utilisez peut-être un câble de qualité médiocre/défectueux pour connecter votre appareil au PC. J'ai remplacé le câble et cela a fonctionné pour moi.

0
Mushtaq Jameel

dans mon cas, le problème était la version des outils de compilation qui était 23.0.0 rc et je suis passé à 22.0.1 et mon problème a été résolu.

0
max

Dans votre fichier gradle.build, utilisez ceci

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

Et ça marche bien.

0
Rishabh Mahatha