web-dev-qa-db-fra.com

Impossible d'exécuter dex: plusieurs fichiers dex définissent le tableau Lcom / myapp / R $;

Depuis la mise à jour vers ADT 14, je ne peux plus construire mon projet. Il construisait bien avant la mise à jour.

L'erreur:

[2011-10-23 16:23:29 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/myapp/R$array;
[2011-10-23 16:23:29 - myProj] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/myapp/R$array;

Des problèmes similaires ont été signalés et j’ai essayé les suggestions proposées, notamment

  • Redémarrage de Eclipse.
  • Nettoyage du projet et reconstruction - Désactivez l'option "Projet-> Construire automatiquement", puis "Nettoyer" et "Construire" le projet, puis essayez de l'exécuter. réinitialiser l'option "Construire automatiquement" sur On
  • Réinstallation des Android Outils de développement
  • Réinstallation d'Eclipse (mise à jour à la dernière version 3.7.1)
  • Création d'un nouveau projet d'importation depuis le système de fichiers
  • Création d'un nouveau projet à partir de Subversion.
386
terry

Mon problème a été résolu après le nettoyage de certains répertoires et fichiers laissés par les versions précédentes des outils. ADT Rev 14 change où les fichiers binaires sont stockés . J'ai supprimé l'intégralité du répertoire bin, redémarré Eclipse, nettoyé la construction et forcé une reconstruction. Cela a semblé faire l'affaire initialement mais le problème est revenu après la prochaine manche.

J'ai finalement découvert que mon répertoire bin était inclus dans le chemin de génération du projet. J'ai exclu bin du chemin de construction et répété les étapes ci-dessus. Cela a résolu mon problème.

94
terry

J'ai eu le même problème, assez bizarre parce que cela ne se produisait qu'avec Eclipse (mais c'était correct avec Ant). Voici comment je l'ai corrigé:

  • Faites un clic droit sur le Project Name
  • Sélectionnez Build Path -> Configure Build Path
  • Dans Java Build Path, accédez à l'onglet Order and Export

  • Décochez votre bibliothèque .jar

Seulement parfois: Dans l'onglet Ordre et exportation, je n'avais pas de bibliothèque de fichiers jar, donc j'ai décoché l'article Android Bibliothèques privées. Maintenant, mon projet est en cours d'exécution.

462
Marco Bonifazi

[Résolu pour moi]

Propriétés du projet Eclipse-> Chemin de construction Java-> Commande et exportation

Décochez Android bibliothèques privées.

49
user802467

Aucune de ce qui précède n'a aidé. C'était un problème simple à la fin.

J'ai eu un projet qui utilise FacebookSDK et ViewPagerIndicator en tant que projets de bibliothèque. Tous ont été construits sur Android API 16 et ces deux projets utilisaient la bibliothèque de support Android vX (X n'étant pas 16!)

J'ai ajouté un fichier JAR externe à ces deux projets et l'ai orienté vers\extras\Android\v4 ... et j'ai également supprimé le fichier v4 que j'avais dans leurs dossiers libs.

Nettoyer tous les projets et reconstruire.

Voilla!

L'erreur exacte que je recevais: Impossible d'exécuter dex: plusieurs fichiers dex définissent Landroid/support/v4/view/PagerAdapter; La conversion au format Dalvik a échoué: impossible d'exécuter dex: plusieurs fichiers dex définissent Landroid/support/v4/view/PagerAdapter;

47
Roy Weinberg

Ce problème m'arrivait, j'avais dans mon dossier libs un fichier .jar externe appelé gson-2.2.2.jar mais, pour une raison quelconque, il y en avait deux, gson-2.2.2.jar et gson-2.2.2.jar ( 1), j’ai simplement supprimé ce dernier et mon projet s’est à nouveau bien construit.

36
TomSelleck
  1. Fermez Eclipse.
  2. Supprimer le dossier bin dans votre dossier de projet.
  3. Lancez Eclipse et nettoyez votre projet.
  4. Maintenant, courez et le problème devrait disparaître
31
Mohit marwal

Comme d'autres l'ont mentionné, cela se produit lorsque vous avez plusieurs copies de la même classe dans votre chemin de génération - y compris bin/dans votre chemin de classe est un moyen de garantir ce problème.

Pour moi, cela s'est produit lorsque j'ai ajouté Android-support-v4.jar à mon dossier libs /, et qu'Eclipse a ajouté une seconde copie à bin/classes/Android-support-v4.jar.

La suppression de la copie supplémentaire dans bin/classes a résolu le problème - vous ne savez pas pourquoi Eclipse en a fait une copie.

Vous pouvez tester cela avec

grep -r YourOffendingClassName YourApp | pot de grep

26
chaqke

Pour moi, je viens de faire un clic droit sur projet -> chemin de construction -> configurer le chemin de construction -> bibliothèques -> supprimer la dépendance

après cela fonctionne.

23
sonida

Cette erreur peut survenir si vous avez deux fichiers JAR contenant les mêmes noms de classe, par exemple. J'avais deux bibliothèques: jsr311-api-1.1.1.jar et jersey-core-1.17.1.jar, toutes deux contenant la classe javax.ws.rs.ApplicationPath. J'ai supprimé jsr311-api-1.1.1.jar et cela a bien fonctionné.

20
Mateus Viccari

J'obtenais cette erreur après avoir ajouté le facebooksdk.jar à un projet qui avait déjà des dépendances sur le Android-support-v4.jar. Depuis le facebooksdk.jar inclut déjà son propre Android-support-v4.jar il y a eu des conflits. Suppression de l'ancien Android-support-v4.jar des projets Propriétés/Java Chemin de construction/Bibliothèques a résolu le problème pour moi.

19
pontiac_ventura

Allez à Projet/propriétés et Java chemin de construction et décoché à bibliothèques privées Android.

This is also another case for this kind of error

Fait

18
Hiren Patel

J'ai supprimé les dépendances Android du chemin de génération et cela a fonctionné.

Edit: ignorez cela. J'ai eu même jar dans mes dépendances maven et le dossier libs. J'ai enlevé celui du dossier lib.

15
Hadi Tok

Vous avez probablement installé r14 , cette erreur peut avoir été causée par la mise à jour des outils de la plate-forme, vous devez réinstaller votre sdk

9
Reno

Pour moi, ce problème n'existe que tant qu'il y a Android projets de bibliothèque impliqués dans mon projet. Ainsi, lorsque je supprime toutes les bibliothèques et que je fais ce que vous avez dit, je peux réexécuter mon application. S'il y a des bibliothèques impliquées, même l'astuce de bin-removal-astuce gagnera.

Je ne comprends pas pourquoi ce bogue est apparu pour la première fois aujourd'hui, car j'utilise ADT 14 depuis plusieurs jours maintenant. Eh bien, il y avait d'autres insectes qui m'ont gardé heureux cependant.

9
mephju

Sélectionnez le projet dans Explorateur de projets, cliquez avec le bouton droit de la souris et sélectionnez Propriétés -> chemin de construction Java -> Source - > Cochez la case Autoriser les dossiers de sortie pour les dossiers sources

8
prasantasing

Supprimer le dossier bin n'était pas suffisant, j'ai également supprimé le dossier gen. Puis, après deux reconstructions, le message d'erreur dex était parti.

8
Rudolf Polzer

Je faisais essentiellement face au même problème. J'ai supprimé le dossier BIN, puis supprimé les fichiers jar inutilisés pour Order et Import from Eclipse. Il a travaillé après cela

8
Ahsan Zaheer

Je suis en retard pour cette soirée, mais j'ajoute ma propre expérience pour pouvoir la retrouver plus tard :)

J'ai rencontré ce problème après la mise à niveau des additifs Android sdk et Eclipse. Aucune mise à niveau ne reste impunie!

Le problème pour moi était lié aux projets de bibliothèque, mon application faisant référence à la fois aux projets Java standard et aux projets de bibliothèque Android. J'ai remarqué que les paramètres du chemin de construction Java incluaient les dossiers src et res de la bibliothèque Android dans la liste Source (tous les utilisateurs qui mentionnent bin dans source, src et res étaient également un problème.)

La solution était donc:

  1. Supprimez toutes les références source et projet référencées de la bibliothèque Android de la section Java Chemin de construction des paramètres de la liste Source et de la liste Projet.
  2. Assurez-vous que les dépendances pures Java sont répertoriées dans la liste des projets et cochées dans l'onglet Ordre et exportation afin que les classes soient incluses dans l'apk.
  3. Assurez-vous que toutes les dépendances de la bibliothèque Android sont répertoriées dans la section Android des propriétés du projet, dans la section de la bibliothèque située sous les versions du SDK cochées.

C'était un bon moyen de rassembler tout cela à partir des autres solutions! Phew!

7
Jay

J'avais deux versions différentes de fichiers .jar de Cordova dans mon dossier libs, j'ai supprimé celle que je n'utilisais même pas et cela a fonctionné immédiatement. Bizarre parce que je n'avais pas remarqué ça avant et que ça marchait avant et que ça a soudainement cessé de fonctionner ...

6
Dediqated

trouvé une solution je crois ??

    [2013-04-28 23:56:09 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/coremedia/iso/AbstractBoxParser$1;

Où il est indiqué: "Lcom/coremedia/iso/AbstractBoxParser $ 1" qui se trouve être l'emplacement de la bibliothèque que j'ai importée et qui était à l'origine du problème. Regardé com.codemedia.iso.AbstractBoxParser $ 1.class et .AbstractBoxParser.class .... a pris ce fichier, l'a décompressé, a supprimé ces deux fichiers, puis a été reconditionné en tant que .Zip, ajouté à la bibliothèque, nettoyé et travaillé! plus de conflit pour moi! (également pas de mises à jour ou de téléchargements supplémentaires)

6
jp093121

Je me suis heurté à cela lors de la mise à niveau de l'adt 14 à 15 et, pour le faire fonctionner, j'ai simplement supprimé le dossier .Eclipse (ainsi que mes paramètres) et réinstallé l'adt 15.

6
Jake1164

Après avoir lu la réponse de Terrys sur la suppression du répertoire bin et Larrys sur l'emplacement du répertoire ANT:

J'ai déplacé les fichiers situés dans le répertoire BIN de mon projet vers le fichier BIN/CLASSES et je suis opérationnel.

Edit 1 Puis échoué à la deuxième manche ... doh

Edit 2 Donc fermé Eclipse a ramené les fichiers à leur emplacement d'origine et tout fonctionne ... euh quoi? Je ne prétends pas savoir pourquoi cela a fonctionné. Mettra à jour si des changements.

Edit 3 J'ai noté dans mes sauvegardes qu'il y avait effectivement des fichiers en double dans le répertoire BIN et BIN/CLASSES.

Donc la réponse est: ne pas avoir de fichiers dans les deux emplacements. Au moins pour moi, c'est ce qui a fonctionné.

6
HostMyBus

Modifiez votre fichier Eclipse.ini et définissez le paramètre de mémoire maximale sur

-Xmx1024m

Puis redémarrez votre ordinateur.

Cela a fonctionné pour moi.

6
Truncarlos

La mise à jour ADT R14 change lorsque les classes vont dans le répertoire bin/classes (voir http://tools.Android.com/recent/buildchangesinrevision14 ). Si vous utilisez ANT, vous devez modifier le chemin d'accès de vos classes de bin à bin/classes. Cela a fonctionné pour moi.

5
Larry Borsato

Solution pour moi:

  1. SAUVEZ VOTRE CODE!
  2. Accédez à votre espace de travail de projet (pas votre projet) et exécutez les commandes suivantes:

    dev1: espace de travail $ cd ~/Documents/espace de travail/.metadata/.plugins/dev1: espace de travail $ rm -rf org.Eclipse.core.resources

  3. Accédez à votre répertoire Eclipse et tapez cette commande:

    dev1: Eclipse $ ./Eclipse clear

  4. Eclipse commencera avec un espace de travail vide - ne vous inquiétez pas, vos projets sont toujours là. Il suffit de créer un nouveau projet à partir d'une ressource existante et tout devrait être beau.

L'erreur exacte que je recevais: [2012-02-07 14:15:53 ​​- Dex Loader] Impossible d'exécuter dex: plusieurs fichiers dex définissent Landroid/support/v4/view/PagerAdapter; [2012-02-07 14:15:53 ​​- ProjectCloud] La conversion au format Dalvik a échoué: impossible d'exécuter dex: plusieurs fichiers dex définissent Landroid/support/v4/view/PagerAdapter;

5
Cookster

J'ai plusieurs projets de bibliothèque avec le même nom de package spécifié dans le AndroidManifest (donc aucun nom de champ en double n'est généré par R.Java). Je devais supprimer toutes les autorisations et activités du fichier AndroidManifest.xml pour tous les projets de bibliothèque afin de supprimer l'erreur. Par conséquent, Manifest.Java n'a pas été créé plusieurs fois. J'espère que cela peut aider quelqu'un.

5
Jared Rummler

Je faisais face au même problème, puis j’ai vu, en poussant mon application, des fichiers jar chargés deux fois, d'où plusieurs erreurs dex. Il suffit d'aller dans les propriétés de votre projet -> Java Chemin de construction et d'essayer de décocher jar qui est en cours de chargement deux fois.

4
Navi

[Résolu pour moi]

en supprimant la bibliothèque en double "fichier JAR", puis supprimez le fichier BuildConfig.Java, Nettoyer le projet et son travail.

4
AbuQauod

Après avoir essayé toutes les autres suggestions sans succès, j'ai supprimé tout le contenu du répertoire "bin" de mes projets, puis j'ai à nouveau exécuté Eclipse et cela a fonctionné.

4
JPB

J'ai converti un projet non-bibliothèque en projet de bibliothèque, mais il contenait un fichier jar précédemment créé dans le dossier libs. La suppression de ce fichier JAR a provoqué la disparition de cette erreur.

4
PacificSky

J'avais essayé la plupart des solutions ci-dessus et certaines d'entre elles avaient déjà fonctionné.

Mais cette fois, aucun d'entre eux n'a fonctionné, alors j'avais supprimé le fichier .jar de mon projet de bibliothèque. et reconstruisez le projet de bibliothèque et d'application.

Et cette fois ça a marché!

3
hi0001234d

Essayez de supprimer R.Java et de laisser Eclipse le régénérer.

3
Blaskovicz

J'ai eu un problème similaire lorsque j'ai ajouté ActionBarSherlock en tant que bibliothèque dans mon projet. Eclipse ADT v21.0 a pré-créé des fichiers dex supposés accélérer la construction du projet. Ces fichiers dex étaient les mêmes que certains des fichiers jar de mon dossier lib. Alors gardez-en un et supprimez l’autre. J'ai supprimé ceux du dossier lib car les fichiers dexed étaient générés automatiquement.

3
RaWa

Je suis confronté au même problème. Le problème que j'ai trouvé que j'ai un projet de bibliothèque, dans le fichier manifeste de ce projet, il n'y a pas de propriété targetSdkVersion. J'ai ajouté cette propriété sous la balise (uses-sdk). Puis nettoyez mon projet. Maintenant, mon application fonctionne normalement.

3
Dinesh

Assurez-vous que "Android-support-v4.jar" est décoché dans Ordre et exportation onglet sous Chemin de construction Java

Suis les étapes:

  1. Propriétés du projet
  2. Chemin de construction Java
  3. Commande et exportation
  4. Décochez "Android-support-v4.jar"
3
Muhamed Riyas M

C’était le meilleur résultat lorsque j’ai cherché cette erreur dans Google.

Bien que la question ne demande pas comment résoudre ce problème en ce qui concerne React Native , je pensais partager de toute façon pour toute personne qui finit ici et utilise React Native .

À partir de la racine du projet, exécutez:

  • cd Android && ./gradlew clean [Mac - Terminal Bash]
  • cd Android & gradlew clean [Windows - Invite de commandes]

Ensuite, react-native run-Android pour générer et exécuter à nouveau.

2
Rob

NON DE LA MÉTHODE CI-DESSUS TRAVAILLE POUR MOI MAIS MATIÈRE IS TRAVAILLE COMME UN CHARME!

Le problème se produit lorsque l'utilisateur construit la bibliothèque dépendante avec Eclipse. Donc, pour obtenir la solution

Étape 1: Supprimez la bibliothèque (comme le projet de bibliothèque de support v4 ou v13) d’Eclipse avec la suppression définitive de la source d’espace de travail.

Étape 2: Réimportez la bibliothèque et incluez-la dans votre projet

Étape 3: Nettoyer et reconstruire

FAIT!

2

Cela se produit lorsque dans notre application, nous avons le dossier libs avec gson jar (par exemple: gson-2.2.4.jar). Au même moment, notre bibliothèque de services Google Play avait déjà Gson.

je l'ai retiré de mon application et its work fine now.

2
AbuQauod

Problème rencontré: le dossier libs a été utilisé comme source dans les préférences du projet. Il a donc été exporté deux fois. Résolu en faisant un clic droit sur le dossier libs -> Chemin de construction -> Supprimer du chemin de construction

2
Doron Zehavi

J'ai résolu ce problème dans mon projet en supprimant une bibliothèque:

Reason: J'ai inclus un projet de bibliothèque dans mon projet et, par erreur, je n'ai pas supprimé la bibliothèque précédente de mon projet. Ainsi, lorsque j'exécutais le projet, les mêmes fichiers dex de bibliothèque étaient générés à deux reprises. la même bibliothèque du dossier lib de mon projet, l’erreur ayant disparu et la compilation ayant été créée avec succès, j’espère que d’autres pourront faire face au même problème.

1
Naveed Ahmad

Le problème est que "Dépendances Android" conserve la référence à l'ancien SDK AdMob même après:

  • supprimer l'ancien sdk d'admob du chemin de construction
  • fourmi propre
  • Eclipse clean
  • supprimer manuellement les dossiers bin et gen
  • eclipse fermé/ouvert
  • mettre à jour les outils SDK
  • mettre à jour adt

La solution consiste à supprimer le fichier JAR AdMob SDK de votre ordinateur, pas seulement du projet.

0
thiagolr

La division du service Google Play peut vous aider: https://developers.google.com/Android/guides/setup#split

donc au lieu d’ajouter simplement des services de jeu:

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

vous ajoutez uniquement ce dont vous avez besoin:

// Google Maps only
compile 'com.google.Android.gms:play-services-maps:7.5.0'
0
sonique

allez à \bin\dexedLibs et supprimez tous les jars des bibliothèques déjà supprimées, puis propre

0
Muhammed Refaat

La conversion au format Dalvik a échoué: Impossible d'exécuter dex: plusieurs fichiers dex définissent Lcom/google/zxing/BarcodeFormat;

Publier cette réponse pour ceux qui reçoivent cette erreur en ce qui concerne le plugin scanner de codes à barres de zxing.

Supprimez simplement le fichier jar dans le dossier libs. Devrait être project/libs/com.google.zxing.client.Android.captureactivity.jar

0
pdxwebdev

j'ai eu le même problème incapable d'exécuter des fichiers multipledex dans Android --lorg\xhtml\CSS

j'ai supprimé 2 fichiers JAR externes dans le dossier lib - core-renderer-3043e0f89ffb2.jar

core-renderer-minimal-e70d6a.jar et mon projet construit à nouveau bien ...

0
user1859771

J'ai eu ce problème et résolu en changeant le chemin de la. JAR pour le répertoire de changement, mais le. jar tiré de l'autre côté, change le chemin et je suis entré sans problème

0
Fernando

J'avais deux bibliothèques de goyaves liées mais non identiques dans le répertoire/libs. Après en avoir supprimé une, le problème a disparu.

0
aez

Pour moi, j'avais indiqué un fichier jar dans BuiltPath qui n'était plus réellement dans ce chemin!

0
Sara

J'ai reçu le même message d'erreur avec le projet de bibliothèque GooglePlayService google-play-services.jar.

Nous utilisons maven, pour cette raison je dois ajouter la bibliothèque dans mon référentiel maven local. (Mvn install: install-file -Dfile = xxx)

La bibliothèque se trouve maintenant deux fois dans le "chemin de construction Java" -> Bibliothèques.

  • une fois dans Android Dépendances
  • et une fois dans les dépendances Maven.

Pour résoudre le problème, je dois supprimer la bibliothèque du répertoire google-play-services_lib/libs (le fichier jar, il est utilisé automatiquement)

0
Gugelhupf

Si vous utilisez 'com.google.Android.gms: play-services', vous pouvez ajouter ce dont vous avez réellement besoin pour consulter la liste suivante:

Google+ com.google.Android.gms:play-services-plus:10.0.1

Connexion au compte Google com.google.Android.gms:play-services-auth:10.0.1

Actions Google, bibliothèque client de base com.google.Android.gms:play-services-base:10.0.1

API Google Address com.google.Android.gms:play-services-identity:10.0.1

Indexation des applications Firebase com.google.firebase:firebase-appindexing:10.0.1 Google Analytics com.google.Android.gms:play-services-analytics:10.0.1

Sensibilisation Google com.google.Android.gms:play-services-awareness:10.0.1

Google Cast com.google.Android.gms:play-services-cast:10.0.1

Google Cloud Messaging com.google.Android.gms:play-services-gcm:10.0.1

Google Drive com.google.Android.gms:play-services-drive:10.0.1

Google Fit com.google.Android.gms:play-services-fitness:10.0.1

Reconnaissance de la position et de l'activité de Google com.google.Android.gms:play-services-location:10.0.1

Google Maps com.google.Android.gms:play-services-maps:10.0.1

Annonces Google Mobile com.google.Android.gms:play-services-ads:10.0.1

Google Places com.google.Android.gms:play-services-places:10.0.1

Mobile Vision com.google.Android.gms:play-services-vision:10.0.1

Google à proximité com.google.Android.gms:play-services-nearby:10.0.1

Visionneuse Google Panorama com.google.Android.gms:play-services-panorama:10.0.1

Services Google Play Game com.google.Android.gms:play-services-games:10.0.1

SafetyNet com.google.Android.gms:play-services-safetynet:10.0.1

Android Pay com.google.Android.gms:play-services-wallet:10.0.1

Android Wear com.google.Android.gms:play-services-wearable:10.0.1

0
Ahmad Aghazadeh

Dans mon cas, je supprime le fichier ".apk" dans le répertoire "src/com/...", nettoie le projet et le lance.

J'avais essayé toutes les suggestions précédentes et ne fonctionnais pas pour moi!

0
Airton

Supprimez le package R généré de votre bibliothèque référencée. Parfois, nettoyer et reconstruire ne supprime pas les anciens fichiers générés par R.

0
alex

Vérifiez que votre dossier bin n'est pas dans le chemin de génération.

0
Sterling Diaz

Cette erreur m'est survenue lorsque j'ai importé un fichier .jar (en fait, il s'agissait de httpmime-4.3.jar) et que je tentais de l'utiliser. Pour moi, la solution était simple: j'ai supprimé le fichier .jar du dossier libs, puis supprimé de Order and Export. A couru le projet à nouveau, cela a fonctionné, alors j'ai ajouté le fichier .jar à nouveau et tout s'est finalement bien passé.

0
erdomester