921 votes

"La conversion au format Dalvik a échoué avec l'erreur 1" sur le JAR externe

Dans mon application Android dans Eclipse, j'obtiens l'erreur suivante.

EXCEPTION DE NIVEAU SUPÉRIEUR INATTENDUE :
java.lang.IllegalArgumentException : déjà ajouté : Lorg/xmlpull/v1/XmlPullParser ;
....
La conversion au format Dalvik a échoué avec l'erreur 1

Cette erreur n'apparaît que lorsque j'ajoute un fichier JAR externe spécifique à mon projet. J'ai cherché pendant longtemps la solution possible, mais aucune des solutions possibles ne fonctionne.

J'ai même essayé de passer à Android 1.6 au lieu de 1.5 (la version actuelle que j'utilise).

0 votes

Cet article peut vous aider à corriger cette erreur dans le cas où vous utilisez un projet de bibliothèque dans votre espace de travail.

4 votes

J'ai essayé ceci et cela a donné la même erreur. J'ai finalement résolu le problème en ajoutant la bibliothèque dans Propriétés->JavaBuildPath->Projects et en ajoutant la bibliothèque à cet endroit. Son nom est "Objets requis sur le chemin de construction :".

27 votes

Ce problème est devenu brutal pour moi. C'est presque suffisant pour abandonner le codage Android. Aucune des solutions ne fonctionne pour moi. Je dois simplement essayer continuellement d'exporter en échouant avec Dalvik error 1 et finalement j'y arriverai. Il faut 15 à 30 minutes pour faire un build de version. C'est un désastre complet.

825voto

user408841 Points 2157

Allez dans Project " Properties " Java Build Path " Libraries et supprimez tout sauf "Android X.Y" (dans mon cas Android 1.5). Cliquez sur OK. Allez dans Projet " Nettoyer " Nettoyer les projets sélectionnés ci-dessous " sélectionnez votre projet et cliquez sur OK. Cela devrait fonctionner.

Il est également possible que vous ayez un fichier JAR situé quelque part dans les dossiers de votre projet (j'avais copié le fichier JAR d'Admob dans mon dossier src) et que vous l'ayez ensuite ajouté comme bibliothèque Java Path. Il n'apparaît pas dans l'explorateur de paquets, donc vous ne le remarquez pas, mais il est compté deux fois, ce qui provoque la redoutable erreur Dalvik 1.

Une autre raison possible pourrait être des conflits de noms de paquets. Supposons que vous ayez un paquet com.abc.xyz et une classe nommée A.java à l'intérieur de ce paquet, et un autre projet de bibliothèque (qui est ajouté à la dépendance de ce projet) qui contient le même fichier com.abc.xyz.A.java alors vous obtiendrez exactement la même erreur. Cela signifie que vous avez plusieurs références au même fichier. A.java et ne peut pas le construire correctement.

Dans d'autres cas, cela peut se produire si vous modifiez ou ajoutez manuellement quelque chose dans le fichier classpath, accidentellement ou en connaissance de cause. Dans certains cas, nous pouvons ajouter manuellement le chemin Android.jar au fichier classpath pour générer le doc java. En supprimant ce chemin, le code généré par javadoc fonctionnera bien.

4 votes

J'ai eu le même problème et les étapes ci-dessus par user408841 ont fonctionné pour moi.

0 votes

Merci, cela a fonctionné lorsque j'ai eu la même erreur avec spring pour Android.

112 votes

Bonjour, pour moi, il suffit d'aller dans " Projet " Nettoyer " Nettoyer les projets sélectionnés ci-dessous ", de sélectionner votre projet et de cliquer sur OK ", en ignorant la première partie.

273voto

michel Points 2620

J'ai résolu le problème.

Il s'agit d'un conflit de fichiers JAR.

Il semble que j'ai deux fichiers JAR sur mon chemin de construction qui incluent le même paquet et les mêmes classes.

smack.jar y android_maps_lib-1.0.2

La suppression de ce paquet de l'un des fichiers JAR a résolu le problème.

18 votes

+1 - En résumé, il s'agit d'un conflit de fichiers JAR. Plus précisément, il pourrait s'agir d'un conflit dans tout deux fichiers JAR. Dans mon cas, le conflit était entre jackson-all-1.7.4.jar, jackson-core-asl-1.5.4.jar et jackson-mapper-asl-1.5.4.jar. J'ai supprimé les deux JARs 1.5.4 et laissé les 1.7.4 tous.

0 votes

Si vous avez des jars dans des projets de bibliothèque que vous avez ajoutés à votre propre projet, comme la façon dont j'avais ajouté le fichier ScoreloopUI à mon jeu AndEngine, ces jars interfèrent également avec le vôtre, même s'ils ne sont pas sur le chemin de construction de votre propre projet.

1 votes

J'avais spécifié Android-sdk/platforms/Android-10/Android.jar manuellement dans .classpath, puis j'ai changé pour 2.3.3 (Android 10) dans les propriétés du projet, ce qui a provoqué un conflit entre les deux Android.jar. La suppression de l'élément supplémentaire dans le chemin de construction de Java a permis de résoudre le problème.

127voto

Noah Points 7332

Solution Windows 7 :

J'ai confirmé que le problème est causé par la ligne de commande de ProGuard dans le fichier
[Répertoire d'installation du SDK Android] \tools\proguard\bin\proguard.bat

Modifier la ligne suivante résoudra le problème :

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*

à

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9

0 votes

Cela n'a pas fonctionné pour moi, mais en commentant la ligne proguard de mon fichier default.properties, l'erreur a disparu. mon problème semble être lié à proguard d'une manière ou d'une autre. j'ai seulement obtenu "Conversion to Dalvik format failed with error 1" lorsque j'ai essayé d'exporter le projet. des idées ?

0 votes

J'ai essayé la suggestion ci-dessus à nouveau, et j'ai supprimé et ajouté à nouveau mon projet de bibliothèque LVL, et maintenant ça marche. je ne suis pas sûr de ce qui l'a arrangé exactement, mais ça marche. merci mon dieu. j'ai perdu des heures sur ce problème.

0 votes

Windows Vista, et cela a fonctionné pour moi. J'avais auparavant essayé de changer le chemin du SDK vers progra~2, de réinstaller, de nettoyer le projet, de supprimer les bibliothèques et de les fixer, etc... Donc merci Noah !

94voto

Ton Snoei Points 51

Vous pouvez résoudre ce problème facilement (avec Eclipse Android Developer Tools, Build : v22.0.1-685705) en désactivant le menu > "Project" > "Build Automatically" pendant l'exportation d'une application Android (non)signée. Après cela, n'oubliez pas de le réactiver.

2 votes

Cela a résolu le problème dans mon cas. Sinon, le problème se produit sporadiquement et sans cause définitive (par exemple, un mauvais jar ou un mauvais chemin).

0 votes

Ça me rendait fou ! C'est la seule solution qui a fonctionné pour moi. Je me demande pourquoi.

1 votes

C'est ce qui m'a résolu - d'autres solutions auraient pu m'aider aussi, mais celle-ci a été la dernière avant de réussir à la faire fonctionner.

53voto

Kocus Points 1162

Si vous avez la révision 12+ de ADT, vous devez mettre à jour votre proguard de 4.4 -> 4.6 (comme décrit aquí ). De plus, vous devez laisser ... \bin\proguard.bat dans sa forme originale.

Il suffit de le télécharger sur le web, et de copier le dossier lib du paquet téléchargé dans le dossier :

[Répertoire d'installation du SDK Android] \tools\proguard\lib

3 votes

C'est le problème que j'ai rencontré avec plusieurs ADT. Télécharger et remplacer les JAR de proguard fonctionne.

0 votes

Wow, merci, cela a réglé le problème pour moi, bien que j'aie également eu besoin de clarifier certains avertissements. stackoverflow.com/q/4525661/38258

0 votes

J'ai changé la version de proguard de 4.4 à 4.9, après cela mon problème n'est toujours pas résolu.

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