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


908

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

EXCEPTION INATTENDUE DE HAUT NIVEAU:
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 longtemps cherché 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).


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

4
J'ai essayé cela et cela a donné la même erreur. Je l'ai finalement corrigé en ajoutant la bibliothèque dans Propriétés-> JavaBuildPath-> Projets et en y ajoutant la bibliothèque. Son appelé "Objets requis sur le chemin de génération:".

27
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 d'exporter en continu avec échec avec l'erreur Dalvik 1 et finalement cela réussira. Il faut 15 à 30 minutes pour créer une version. C'est un désastre complet.
Anthony

Si vous utilisez deux ordinateurs sur un espace de travail avec un logiciel de partage de fichiers, il duplique parfois l'espace de travail-> projet-> bin-> dossier com en com 1, com 2. Supprimez simplement tout avec 1 ou 2, nettoyez votre projet et vous êtes prêt aller.
Ozan Atmar

Réponses:


826

Allez dans Projet »Propriétés» Chemin de génération Java »Bibliothèques et supprimez tout sauf« Android XY »(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 Admob dans mon dossier src) et ensuite l'ajouté en tant que bibliothèque de chemin Java. Il n'apparaît pas sous l'explorateur de packages, vous ne le remarquez donc pas, mais il est compté deux fois, ce qui provoque l'erreur redoutée de Dalvik 1.

Une autre raison possible pourrait être les conflits de nom de package. Supposons que vous ayez un package com.abc.xyzet une classe nommés à l' A.javaintérieur de ce package, et un autre projet de bibliothèque (qui est ajouté à la dépendance de ce projet) qui contient le même 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.javaet que vous ne pouvez pas le créer correctement.

Dans d'autres cas, cela peut se produire si vous modifiez / ajoutez accidentellement ou sciemment quelque chose dans le fichier de chemin de classe manuellement. Dans certains cas, nous pouvons ajouter manuellement le chemin android.jar au fichier classpath pour générer le document java. le code fonctionnera très bien.Veuillez vérifier également si l'un se produit toujours.


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

112
Salut. Il me corrige simplement en allant dans "Projet» Nettoyer »Nettoyer les projets sélectionnés ci-dessous» sélectionnez votre projet et cliquez sur OK. " ignorer le 1er bit
Kurru

79
Je suis assez déroutant avec cette solution. Si vous supprimez tous les fichiers jar et les bibliothèques, comment allez-vous compiler le projet avec succès?
Cheok Yan Cheng

3
J'ai trouvé que la seule façon pour que cela fonctionnait était de NETTOYER TOUS LES PROJETS! Surtout ceux dont dépend le projet incriminé.
Roy Hinkley

7
Je suis nouveau dans le développement Android provenant de .NET, et pour être honnête, cette erreur incarne mon expérience avec. Sérieusement ... que voulez-vous faire avec ce message d'erreur? C'est totalement dénué de sens. «Dalvik» ?? Tu quoi?? Me ramener au studio visuel: p
David Masters

271

J'ai résolu le problème.

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

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

smack.jar et android_maps_lib-1.0.2

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


18
+1 - En résumé, il s'agit d'un conflit de fichier JAR. Plus précisément, cela pourrait être un conflit dans les 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 retiré les deux JAR 1.5.4 et laissé tous les 1.7.4.
jmort253

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

1
J'avais spécifié manuellement android-sdk / plates-formes / android-10 / android.jar dans .classpath, puis je suis passé à 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 du supplément dans le chemin de
génération

2
De mon côté, le conflit venait de l'ActionbarSherlock qui comprend déjà le package de support Android qui a été inclus deux fois.
Tobias

Juste pour information: dans mon cas, en raison de l'échec, c'est que la cible Android différente n'était pas la même dans les deux projets: android: targetSdkVersion = "xx"
Andreas Mattisson

126

Solution Windows 7:

Confirmé que le problème est provoqué par la ligne de commande 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

cela n'a pas fonctionné pour moi, mais commenter la ligne proguard de mon fichier default.properties a fait disparaître l'erreur. mon problème semble être lié à proguard en quelque sorte. J'obtenais seulement «La conversion au format Dalvik a échoué avec l'erreur 1» lors de la tentative d'exportation du projet. Des pensées?
Ben H

j'ai essayé à nouveau la suggestion ci-dessus, et supprimé et rajouté mon projet de bibliothèque LVL, et maintenant cela fonctionne. Je ne sais pas exactement ce qui l'a corrigé, mais cela fonctionne. Dieu merci. j'ai perdu des heures à ce sujet.
Ben H

Windows Vista, et cela a fonctionné pour moi. J'avais précédemment essayé de changer le chemin du SDK en progra ~ 2, en réinstallant, en nettoyant le projet, en supprimant les bibliothèques et en réparant, etc ... Alors merci Noah!
Mudar

Merci beaucoup Noah, cela a fonctionné pour moi aussi sur Windows 7. L'erreur a commencé après la mise à jour d'ADT vers la version 12.
Kevin

Résolu mon problème sur Windiws 7.
poiuytrez

94

Vous pouvez résoudre ce problème facilement (avec les outils de développement Eclipse Android, Build: v22.0.1-685705) en désactivant le menu> "Projet"> "Construire automatiquement" lors de l'exportation d'une application Android (non) signée. Après cela, n'oubliez pas de le rallumer.


2
Cela l'a résolu dans mon cas. Sinon, le problème se produit de manière sporadique et sans cause définitive (par exemple, mauvais pot ou chemin)
Dirk Conrad Coetsee

Cela me rendait fou! Une seule solution qui a fonctionné pour moi. Se demander pourquoi.
PrivusGuru

1
Cela a résolu pour moi - d'autres solutions auraient peut-être aussi aidé, mais celle-ci était la dernière avant de la faire fonctionner.
pertz

J'ai passé 4 heures à travailler sur toutes les suggestions que j'ai pu trouver et finalement à celle-ci. Merci - cela a résolu le problème immédiatement.
Squonk

Solution très simple, mais ça marche! M'a sauvé quelques heures de combat inutile avec Eclipse. Essayez-le avant d'essayer une solution plus compliquée.
fragon

53

Si vous avez ADT révision 12+, vous devez mettre à jour votre proguard de 4.4 -> 4.6 (comme décrit ici ). Vous devez également laisser le fichier ... \ bin \ proguard.bat sous la forme d'origine.

Il suffit de le télécharger à partir du Web et de copier le dossier lib du package téléchargé vers:

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


3
Cela a été mon problème sur plusieurs ADT. Le téléchargement et le remplacement des fichiers JAR proguard fonctionnent.
M. S

Wow, merci, cela a résolu le problème pour moi, même si j'avais également besoin de clarifier certains avertissements. stackoverflow.com/q/4525661/38258
Nick Gotch

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

1
Je devais juste le faire moi-même, en passant de 4.7 -> 4.11 (le dernier en date ici: sourceforge.net/projects/proguard/files ). J'ai juste renommé l'ancien <sdk>/tools/proguardrépertoire et déplacé le répertoire décompressé complet proguard4.11vers l'ancien chemin. Voila! Maintenant, si seulement je pouvais récupérer mon heure précédente ... -_-
qix

1
Merci! cela résout mon problème correctement. Mon problème est causé lorsque je mets à jour mon sdk à partir du gestionnaire de sdk et que le proguard a été réinitialisé à la version d'origine qui l'accompagnait avec le niveau api 11. Après avoir mis à jour le proguard, jar vers la dernière version. et il fonctionne! Ma référence: java.dzone.com/articles/my-reminder-how-fix-conversion
mmw5610

41

EDIT (nouvelle solution):

Il semble que la solution précédente ne soit qu'un contournement. J'ai finalement réussi à résoudre définitivement le problème: dans mon cas, il y avait un décalage dans les fichiers android-support-v4 dans mon projet et dans le projet Facebook référencé dans mon projet.

J'ai trouvé cette erreur en effectuant une vérification des peluches (Outils Android / Exécuter des peluches: rechercher les erreurs courantes)

Ma solution précédente:

J'ai essayé toutes les solutions possibles sur ce site - rien n'y fait !!!

Enfin, j'ai trouvé une réponse ici: https://groups.google.com/forum/#!topic/actionbarsherlock/drzI7pEvKd4

Étapes faciles:

Allez dans Projet -> décochez Générer automatiquement

Allez dans Projet -> Nettoyer ..., nettoyez le projet de bibliothèque et votre projet d'application

Exportez votre application en tant qu'APK signé alors que la construction automatique est toujours désactivée


Merci d'avoir travaillé pour moi pour mon projet cocos2dx js utilisant adt eclipse 23
snowflakes74

Erreur: option inconnue '0409' dans l'argument numéro 1
Iman Marashi

30

Voici un autre scénario et une solution:

Si vous rencontrez ce problème récemment après avoir mis à jour l'ADT pour Eclipse:

  1. Dans votre projet d'application, recherchez les dossiers source liés pointant vers vos projets de bibliothèque (ils ont des noms sous la forme "LibraryName_src").
  2. Sélectionnez tous ces projets, faites un clic droit, choisissez " Build Path " -> " Remove from Build Path ".
  3. Choisissez " Dissocier également le dossier du projet " et cliquez sur " Oui ".
  4. Nettoyez, reconstruisez et redéployez le projet.

Il semble que la raison en soit que certaines versions précédentes des dossiers source de projet de bibliothèque liés à ADT aux projets "enfants", et la combinaison ADT / Dex actuelle ne soit plus compatible avec cette solution.

EDIT: ceci est confirmé par une entrée du blog Android Dev, en particulier celle-ci - voir le 8ème paragraphe.


1
C'est de loin la réponse la plus utile à mon problème particulier . Merci beaucoup!!!
Bill The Ape

C'est ce que j'ai pu utiliser avec succès, pas la réponse très appréciée par user408841.
rics

29

Allez dans Projet, puis décochez "Générer automatiquement". Ensuite, essayez d'exporter le projet et l'erreur a disparu.


27

Cela peut également être provoqué si vous avez ajouté un Android.jarfichier à votre chemin de génération, peut-être par un correctif rapide accidentel dans Eclipse. Supprimez-le en cliquant avec le bouton droit sur Projet -> chemin de génération -> configurer le chemin de génération -> android.jar , supprimez.


25

Le simple nettoyage du projet a fonctionné pour moi chaque fois que cette erreur s'est produite.


Redémarrer Eclipse + nettoyer le projet + build manuel a fonctionné pour moi.
dodgy_coder

Le nettoyage a fonctionné pour moi .... donc si vous avez une bonne version de débogage que vous avez exécutée sur des téléphones réels, puis allez à l'exportation et voyez cette erreur ... essayez d'abord de nettoyer tous les projets.
lepert

16

Ma propre et unique solution que j'ai trouvée aujourd'hui après quatre heures de test de toutes les solutions, est une combinaison de nombreuses solutions fournies ici:

  • Delete projet d'Eclipse
  • Supprimer des fichiers dans \binet \gendepuis le dossier du projet
  • Supprimer les références aux bibliothèques dans le .classpathfichier du dossier de projet racine
  • Redémarrez Eclipse avec la ligne de commande: eclipse -clean
  • Import projet
  • Faites un clic droit sur le projet - sélectionnez Properties> Java Build Path>Libraries et supprimer tout le reste deAndroid XX.Y
  • Enfin cleanprojet, attendre construction automatique ou Buildil
  • Lancez et maintenant ça marche! Au moins pour moi...

J'ai essayé chaque étape à la fois et de nombreuses combinaisons, mais seule la succession de toutes les étapes à la fois a réussi! J'espère que je ne vais plus y faire face ...


Un utilisateur anonyme a averti que cela avait eu des résultats désastreux. Essayez à vos risques et périls!
PaulG

cela fonctionne pour moi mais je n'ai pas fait: "eclipse -clean" et je n'ai pas supprimé les bibliothèques.
NicoMinsk

La suppression du bindossier l'a fait pour moi.
boltup_im_coding

14

Juste pour les autres personnes qui ont toujours ce problème et qui ont essayé les réponses ci-dessus mais qui obtiennent toujours l'erreur (ce qui était mon cas), alors ma solution était de supprimer le projet d'Eclipse et de le réimporter à nouveau.

Cela a fait que la bibliothèque Android a été ajoutée à nouveau à mes bibliothèques référencées, alors maintenant j'ai deux fichiers JAR Android référencés, donc j'ai supprimé l'un d'entre eux et maintenant ça compile très bien.

Solution: supprimez le projet d'Eclipse IDE, puis réimportez-le à nouveau, puis recherchez les solutions ci-dessus.


Merci! Cela m'a aidé à sortir de zéro.
herbertD

10

Je me suis attaqué à ce problème aujourd'hui. Le nettoyage et la reconstruction n'ont pas résolu le problème. La suppression et la réimportation du projet n'ont pas aidé non plus.

Je l'ai finalement retracée à un mauvais ajout à mon fichier .class. Je pense que cela a été ajouté par les outils du plugin lorsque j'essayais de résoudre un autre problème, en le supprimant, il s'est débarrassé de l'erreur de construction "La conversion au format Dalvik a échoué avec l'erreur 1":

<classpathentry kind="lib" path="C:/dev/repository/android-sdk-windows/platforms/android-3/android.jar">
    <attributes>
        <attribute name="javadoc_location" value="file:/C:/dev/repository/android-sdk-windows/docs/reference"/>
    </attributes>
    <accessrules>
        <accessrule kind="nonaccessible" pattern="com/android/internal/**"/>
    </accessrules>


9

Pour moi, une référence JAR supplémentaire était apparue dans mon chemin de génération. J'ai supprimé cela, et cela fonctionne maintenant.


8

Mon problème a été causé par la version 12.0 d'ADT et l'intégration de ProGuard. Ce bug est bien documenté et la solution est dans la documentation

La solution est là

Ligne de commande ProGuard


Merci Croc, je ne pense pas que ce bug soit très bien documenté - je ne l'ai pas trouvé après avoir cherché pendant une heure une solution.
Kevin

Vous écrivez probablement - le problème est qu'un seul message d'erreur a trop de causes. Google devrait avoir plus de messages pour aider les utilisateurs à résoudre le problème. Vous pouvez obtenir du réconfort dans le fait qu'il m'a fallu deux jours pour résoudre le problème quand je l'ai rencontré ...
Croc

Le commentaire 11 sur la page de discussion des bogues liés a résolu le problème ici: définissez la sortie de la construction sur Verbose (à partir de Fenêtre> Préférences> Android> Construire) et recherchez le JAR ou les classes que le compilateur utilise mais ne devrait pas y être. Retirez-les. Expérience à nouveau sans aucun problème.
Giulio Piancastelli

8

J'ai traité ce problème lors de l'utilisation de la bibliothèque Sherlock ActionBar dans mon projet. Vous pouvez faire l'étape suivante, cela fonctionne pour moi.

  1. Faites un clic droit sur votre projet, sélectionnez les propriétés.
  2. Une boîte de dialogue apparaîtra, sélectionnez «Chemin de génération Java» dans le menu de gauche.
  3. Supprimez «dépendances Android» et «bibliothèques privées Android» sur le panneau de droite, puis cliquez sur OK
  4. Nettoyez votre projet (sélectionnez le menu Projet -> Nettoyer)
  5. Faites un clic droit sur votre projet, sélectionnez Outils Android -> Corriger les propriétés du projet
  6. Nettoyez le projet une fois de plus.
  7. Redémarrez votre ordinateur
  8. Eclipse ouverte et exportation apk

J'espère que cela vous aidera.


Leur message d'erreur devrait être plus précis. Vous gagnez mon temps. Merci.
teapeng

7

Dans mon cas, le problème est en fait avec le projet API OpenFeint. J'ai ajouté OpenFeint comme projet de bibliothèque:

projet de bibliothèque]! [1]! [Entrez la description de l'image ici.

Il est également ajouté dans le chemin de génération, les outils ADT 16 donnent une erreur avec ce scénario.

Faites un clic droit sur votre projet et cliquez sur le chemin de génération, configurez le chemin de génération, puis voyez l'image et supprimez votre projet OpenFeint d'ici et tout est fait :)

Entrez la description de l'image ici


7

J'ai trouvé autre chose. Android utilise le /libsrépertoire des fichiers JAR. J'ai vu l'erreur "La conversion au format Dalvik a échoué avec l'erreur 1" plusieurs fois, toujours lorsque j'ai fait une erreur dans mes fichiers JAR.

Maintenant, j'ai mis à niveau Roboguice vers une version plus récente, en plaçant le nouveau fichier JAR dans le /libs répertoire et en basculant le chemin d'accès aux classes vers la nouvelle version. Cela a provoqué l'erreur Dalvik.

Lorsque j'ai supprimé l'un des fichiers JAR Roboguice du /libsdossier, l'erreur a disparu. Apparemment, Android récupère tous les fichiers JAR /libs, quels que soient ceux que vous spécifiez dans le chemin de génération Java. Je ne me souviens pas exactement, mais je pense qu'Android a commencé à utiliser /libspar défaut à partir d' Android 4.0 (Ice Cream Sandwich, ICS).


7

La mise à jour de Proguard vers la dernière version l'a résolu pour moi.

  • Mon chemin de progression était C:\Program Files (x86)\Android\android-sdk\tools\proguard\
  • J'ai téléchargé la nouvelle version d' ici
  • et remplacé les dossiers bin et lib

DIEU MERCI!


7

En général, il semble que ce problème survienne lorsqu'il existe des fichiers JAR inutiles dans le chemin de génération.

J'ai rencontré ce problème en travaillant sur IntelliJ IDEA . Pour moi, cela s'est produit parce que j'ai ajouté les bibliothèques JUnit et Mockito qui étaient en cours de compilation au moment de l'exécution. Cela devait être réglé sur "testing" dans les propriétés du module.


Oh merci d'avoir mentionné "En général, il semble que ce problème survienne quand il y a des pots inutiles dans le chemin de construction." Après avoir supprimé l'erreur de fichiers jar inutiles a disparu. :)
surendran

6

Aucune des solutions précédemment proposées n'a fonctionné pour moi. Dans mon cas, le problème s'est produit lorsque je suis passé du référencement d'un dossier de code source de bibliothèque à l'utilisation du fichier JAR de bibliothèque. Initialement, un projet de bibliothèque Android était répertorié dans la section Propriétés du projet d'application Android \ Page Android \ Bibliothèque, et la bibliothèque était également comparée dans l'arborescence de l'explorateur de projet en tant que lien vers le répertoire source de la bibliothèque.

En premier lieu, je viens de supprimer le lien du répertoire de l'arborescence du projet et j'ai ajouté la bibliothèque JAR au chemin de génération, mais cela a provoqué l'exception.

La procédure correcte était (après avoir modifié le chemin de génération et remis la référence à la source de la bibliothèque):

  • supprimer correctement le lien du répertoire source de la bibliothèque en supprimant réellement la référence de la page Propriétés \ Android du projet d'application

  • ajouter le JAR de la bibliothèque au chemin de génération du projet d'application comme d'habitude.


6

Aucune des solutions énumérées n'a fonctionné pour moi.

Voici où j'avais un problème:

J'ai ajouté le fichier JAR externe jSoup au chemin de mon projet en le plaçant d'abord dans un dossier source appelé "libs", puis en faisant un clic droit dessus, Build Path -> ajouter au build path. Cela a jeté l'erreur de conversion Dalvik. Il a dit que j'avais "déjà inclus" une classe de ce fichier JAR. J'ai regardé autour du répertoire du projet et j'ai trouvé que l'endroit où il était "déjà inclus" était en fait le binrépertoire. J'ai supprimé le fichier JAR du binrépertoire et actualisé le projet dans Eclipse et l'erreur a disparu!


5

Toutes les solutions ci-dessus n'ont pas fonctionné pour moi. Je n'utilise aucun .jar précompilé. J'utilise les erreurs LVL et Dalvik, toutes liées à la bibliothèque de licences du marché.

Le problème a été résolu en supprimant le projet principal et en réimportant (créer un nouveau projet à partir de sources existantes).


5

J'ai eu le même problème et aucune de ces solutions n'a fonctionné. Enfin, j'ai vu dans la console que l'erreur était due à une classe dupliquée (une dans le projet existant, une dans le fichier jar ajouté):

java.lang.IllegalArgumentException: already added: package/MyClassclass;
[2011-01-19 14:54:05 - ...]: Dx1 error; aborting
[2011-01-19 14:54:05 - ...] Conversion to Dalvik format failed with error 1

Vérifiez donc si vous ajoutez un pot avec des classes dupliquées dans votre projet. Si oui, essayez d'en supprimer un.

Ça a marché pour moi.



5

Souvent pour moi, le nettoyage du projet NE résout PAS ce problème.

Mais la fermeture du projet dans Eclipse puis sa réouverture semblent le corriger dans ces cas ...


1
Même chose pour moi, fermer Eclipse et redémarrer le résout généralement. Ensuite j'obtiens j'essaye, mais je ne peux pas faire une deuxième exportation, je dois redémarrer à nouveau.
Ted

5

J'ai rencontré ce problème mais ma solution était double. 1.) J'ai dû ajouter une version cible Android sous projet -> propriétés -> Android . 2.) Je n'avais pas tous les «modules complémentaires tiers» de google. Cliquez dans AVD SDK manager sous les packages disponibles -> add-ons tiers -> Google Inc . J'ai téléchargé tous les SDK et cela a résolu mon problème.


Ma solution était à peu près la même que celle de @THE_DOM. Cliquez avec le bouton droit sur le projet, choisissez Outils Android, puis choisissez Ajouter une bibliothèque de compatibilité. Cela téléchargera ces "modules complémentaires tiers" si vous ne les avez pas (solution de THE_DOM), mais il les ajoutera également à votre projet. Que cette solution soit juste un placebo ou non reste à voir. :)
Chris

5

J'utilise Android 1.6 et j'avais un fichier JAR externe. Ce qui a fonctionné pour moi a été de supprimer toutes les bibliothèques, de cliquer avec le bouton droit sur le projet et de sélectionner Outils Android -> * Corriger les propriétés du projet (qui a ajouté Android 1.6), puis de rajouter le fichier JAR externe.


5

J'ai rencontré ce problème car le plug-in Android-Maven dans Eclipse ne reconnaissait apparemment pas les références transitives et les références référencées deux fois à partir de quelques projets (y compris un projet de bibliothèque Android), et les incluant plus d'une fois. J'ai dû utiliser hocus-pocus pour tout inclure une seule fois, même si Maven est censé s'occuper de tout cela.

Par exemple, j'avais une bibliothèque de base globalmentor-core, qui était également utilisée par globalmentor-google et globalmentor-android (ce dernier étant une bibliothèque Android). Dans le globalmentor-android, pom.xmlj'ai dû marquer la dépendance comme "fournie" et exclue des autres bibliothèques dans lesquelles elle était transitoirement incluse:

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-core</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!-- android-maven-plugin can't seem to automatically keep this from being
             included twice; it must therefore be included manually (either explicitly
             or transitively) in dependent projects -->
        <scope>provided</scope>
    </dependency>

Ensuite, dans l'application finale, pom.xmlj'ai dû utiliser la bonne ruse pour n'autoriser qu'un seul chemin d'inclusion --- ainsi que ne pas inclure explicitement la bibliothèque principale:

    <!-- android-maven-plugin can't seem to automatically keep this from being
        included twice -->
    <!-- <dependency> -->
    <!-- <groupId>com.globalmentor</groupId> -->
    <!-- <artifactId>globalmentor-core</artifactId> -->
    <!-- <version>1.0-SNAPSHOT</version> -->
    <!-- </dependency> -->

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-google</artifactId>
        <version>1.0-SNAPSHOT</version>
        <exclusions>
            <!-- android-maven-plugin can't seem to automatically keep this from
                being included twice -->
            <exclusion>
                <groupId>com.globalmentor</groupId>
                <artifactId>globalmentor-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-android</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

Ce qui est étrange pour moi, c'est que <extractDuplicates>true</extractDuplicates>dans le plugin android-maven, le problème a été résolu, mvn installmais pas mvn deployoù j'ai eu l'erreur décrite ... vraiment étrange
Karussell

5

Dans mon cas

projet-> propriétés-> chemin de génération java -> dans l'ordre et onglet d'exportation -> décochez android-support-v4.jar


5

Nettoyez simplement le projet

Si cela ne fonctionne pas, essayez les autres solutions


plus 1 pour la solution simple
Shylendra Madda

Et je dois également redémarrer Eclipse.
Dino Tw
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.