"Conversione nel formato Dalvik non riuscita con errore 1" su JAR esterno


908

Nella mia applicazione Android in Eclipse viene visualizzato il seguente errore.

ECCEZIONE DI PRIMO LIVELLO INASPETTATA:
java.lang.IllegalArgumentException: già aggiunta: Lorg / xmlpull / v1 / XmlPullParser;
....
Conversione nel formato Dalvik non riuscita con errore 1

Questo errore appare solo quando aggiungo un file JAR esterno specifico al mio progetto. Ho cercato a lungo la possibile soluzione, ma nessuna delle possibili soluzioni funziona.

Ho anche provato a passare ad Android 1.6 anziché a 1.5 (la versione corrente che utilizzo).


Questo articolo può aiutarti a correggere questo errore nel caso in cui usi un progetto di libreria nel tuo spazio di lavoro.
Nguyen Minh Binh

4
Ho provato questo e ha dato lo stesso errore. Alla fine l'ho risolto aggiungendo la libreria in Proprietà-> JavaBuildPath-> Progetti e aggiungendo lì la libreria. Si chiama "Oggetti richiesti nel percorso di compilazione:".

27
Questo problema è diventato brutale per me. È quasi sufficiente rinunciare alla codifica Android. Nessuna delle soluzioni funziona per me. Devo semplicemente provare continuamente ad esportare fallendo con l'errore Dalvik 1 e alla fine ci riuscirà. Sono necessari 15-30 minuti per creare una versione di rilascio. È un disastro completo.
Anthony

Se usi due computer su un'area di lavoro con un software di condivisione file, a volte duplica l'area di lavoro-> progetto-> bin-> com come com 1, com 2. Elimina semplicemente tutto con 1 o 2, pulisci il tuo progetto e sei pronto andare.
Ozan Atmar,

Risposte:


826

Vai a Progetto »Proprietà» Percorso build Java »Librerie e rimuovi tutto tranne" Android XY "(nel mio caso Android 1.5). fai clic su OK. Vai a Progetto »Pulisci» Pulisci progetti selezionati di seguito »seleziona il tuo progetto e fai clic su OK. Dovrebbe funzionare.

È anche possibile che tu abbia un file JAR posizionato da qualche parte nelle cartelle del tuo progetto (avevo copiato il file JAR di Admob nella mia cartella src) e POI l'ho aggiunto come Java Path Library. Non viene visualizzato sotto Esplora pacchetti, quindi non lo noti, ma viene conteggiato due volte, causando il temuto errore 1 di Dalvik.

Un'altra possibile ragione potrebbe essere il conflitto di nomi di pacchetti. Supponiamo di avere un pacchetto com.abc.xyze una classe denominata A.javaall'interno di questo pacchetto e un altro progetto di libreria (che viene aggiunto alla dipendenza di questo progetto) che contiene lo stesso com.abc.xyz.A.java, quindi otterrai lo stesso errore esatto. Ciò significa che hai più riferimenti allo stesso file A.javae non riesci a crearlo correttamente.

In altri modi ciò può accadere se si modifica / aggiunge accidentalmente o consapevolmente qualsiasi cosa nel file del percorso di classe manualmente. In alcuni casi è possibile aggiungere manualmente il percorso android.jar al file di percorso di classe per generare il documento java. il codice funzionerà bene. Controlla anche questo se si verifica ancora qualcuno.


4
Ho avuto lo stesso problema e i passaggi precedenti di user408841 hanno funzionato per me.
Arunabh Das,

112
Ciao. Mi risolve semplicemente andando su "Progetto» Pulisci »Pulisci i progetti selezionati di seguito» seleziona il tuo progetto e fai clic su OK ". ignorando il 1 ° bit
Kurru

79
Sono abbastanza confuso con questa soluzione. Se rimuovi tutti i file jar e le librerie, come hai intenzione di compilare il progetto con successo?
Cheok Yan Cheng

3
Ho scoperto che l'unico modo in cui ha funzionato per me era PULIRE TUTTI I PROGETTI! Soprattutto quelli da cui dipende il progetto offensivo.
Roy Hinkley,

7
Sono nuovo nello sviluppo di Android proveniente da .NET e, a dire il vero, questo errore incarna la mia esperienza con esso. Seriamente ... cosa intendi fare con quel messaggio di errore? È totalmente insignificante. 'Dalvik' ?? Tu cosa?? Riportami a Visual Studio: p
David Masters,

271

Ho risolto il problema

Questo è un conflitto di file JAR.

Sembra che sul mio buildpath ho due file JAR che includono lo stesso pacchetto e le stesse classi.

smack.jar e android_maps_lib-1.0.2

L'eliminazione di questo pacchetto da uno dei file JAR ha risolto il problema.


18
+1: in sintesi, si tratta di un conflitto di file JAR. In particolare, questo potrebbe essere un conflitto in qualsiasi due file JAR. Nel mio caso, il conflitto era tra jackson-all-1.7.4.jar, jackson-core-asl-1.5.4.jar e jackson-mapper-asl-1.5.4.jar. Ho rimosso i due JAR 1.5.4 e lasciato il 1.7.4 tutto.
jmort253,

Se hai vasetti in qualsiasi progetto di libreria che hai aggiunto al tuo progetto, come il modo in cui ho aggiunto il ScoreloopUIprogetto al mio gioco AndEngine, questi vasi interferiscono anche con i tuoi, anche se non si trovano sul percorso di costruzione del tuo progetto.
pqn

1
Avevo specificato android-sdk / platform / android-10 / android.jar manualmente in .classpath, quindi sono passato a 2.3.3 (Android 10) nelle proprietà del progetto che ha causato il conflitto di entrambi i file android.jar. Rimuovere il extra nel Java Build Path ha funzionato
styler1972,

2
Da parte mia il conflitto è venuto da ActionbarSherlock che include già il pacchetto di supporto Android che git ha incluso due volte.
Tobias,

Solo per informazione: nel mio caso, a causa del fallimento, è stato che il diverso target Android non era lo stesso in entrambi i progetti: android: targetSdkVersion = "xx"
Andreas Mattisson,

126

Soluzione Windows 7:

Confermato che il problema è causato dalla riga di comando ProGuard nel file
[Directory di installazione SDK Android] \ tools \ proguard \ bin \ proguard.bat

Modifica la seguente riga risolverà il problema:

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

per

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

questo non ha funzionato per me, ma commentando la riga proguard dal mio file default.properties ha fatto sparire l'errore. il mio problema sembra in qualche modo essere correlato alla proguard. stavo ottenendo "Conversione nel formato Dalvik non riuscita con errore 1" quando provavo a esportare il progetto. qualche idea?
Ben H,

ho provato di nuovo il suggerimento di cui sopra, ho rimosso e aggiunto nuovamente il mio progetto di libreria LVL, e ora funziona. non sono sicuro di cosa sia stato risolto esattamente, ma funziona. Grazie Dio. ho perso ore su questo.
Ben H,

Windows Vista e questo ha funzionato per me. In precedenza avevo provato a cambiare il percorso dell'SDK in progra ~ 2, reinstallare, pulire il progetto, rimuovere le librerie e correggere, ecc ... Quindi grazie Noah!
Mudar,

Grazie mille Noah, questo ha funzionato anche per me su Windows 7. L'errore è iniziato dopo aver aggiornato ADT alla versione 12.
Kevin

Risolto il mio problema su Windiws 7.
poiuytrez,

94

Puoi risolvere facilmente questo problema (con Eclipse Android Developer Tools, Build: v22.0.1-685705) disattivando il menu> "Progetto"> "Crea automaticamente" durante l'esportazione (non) dell'applicazione Android. Dopodiché, non dimenticare di riaccenderlo.


2
Questo ha risolto nel mio caso. In caso contrario, il problema si verifica sporadicamente e senza una causa definitiva (ad es.
Vaso

Questo mi stava facendo impazzire! Un'unica soluzione che ha funzionato per me. Mi chiedo perché.
PrivusGuru

1
Questo risolto per me - anche altre soluzioni potrebbero aver aiutato, ma questa è stata l'ultima prima di farlo funzionare.
pertz

Ho trascorso 4 ore a elaborare tutti i suggerimenti che ho trovato e finalmente sono arrivato a questo. Grazie - ha risolto immediatamente il problema.
Squonk,

Soluzione molto semplice, ma funziona! Mi ha salvato alcune ore di lotta inutile con Eclipse. Provalo prima di provare qualsiasi soluzione più complicata.
Fragon

53

Se hai la revisione ADT 12+, dovresti aggiornare il tuo proguard da 4.4 -> 4.6 (come descritto qui ). Inoltre, dovresti lasciare il file ... \ bin \ proguard.bat nel formato originale.

Basta scaricarlo dal web e copiare la cartella lib dal pacchetto scaricato nel:

[Directory di installazione dell'SDK Android] \ tools \ proguard \ lib


3
Questo è stato il mio problema tra più ADT. Download e sostituzione delle opere proguard JARs.
Sig. S,

Wow, grazie, questo mi ha risolto, anche se dovevo anche chiarire alcuni avvertimenti. stackoverflow.com/q/4525661/38258
Nick Gotch

ho cambiato la versione proguard da 4.4 a 4.9, dopo che il mio problema non era ancora risolto.
Hiren Patel,

1
Ho dovuto farlo da solo, andando da 4.7 -> 4.11 (ultimo a partire da ora qui: sourceforge.net/projects/proguard/files ). Ho appena rinominato la vecchia <sdk>/tools/proguarddirectory e ho spostato la directory completa decompressa proguard4.11sul vecchio percorso. Ecco! Ora, se solo potessi riavere la mia ora precedente ... -_-
qix

1
Grazie! questo risolve il mio problema giusto. Il mio problema è causato quando aggiorno il mio sdk da sdk manager e il proguard è stato ripristinato alla versione originale fornita con il livello api 11. Dopo aver aggiornato il proguard, jar alla versione più recente. e funziona! La mia referenza: java.dzone.com/articles/my-reminder-how-fix-conversion
mmw5610

41

EDIT (nuova soluzione):

Sembra che la soluzione precedente sia solo un bypass. Sono finalmente riuscito a risolvere definitivamente il problema: nel mio caso c'era una discrepanza nei file android-support-v4 nel mio progetto e nel progetto Facebook a cui si fa riferimento nel mio progetto.

Ho trovato questo errore eseguendo il controllo dei lanugine (Strumenti Android / Esegui lanugine: Verifica errori comuni)

La mia soluzione precedente:

Ho provato qualsiasi possibile soluzione su questo sito - niente ha aiutato !!!

Finalmente ho trovato una risposta qui: https://groups.google.com/forum/#!topic/actionbarsherlock/drzI7pEvKd4

Semplici passi:

Vai a Progetto -> deseleziona Crea automaticamente

Vai a Progetto -> Pulisci ..., pulisci sia il progetto della libreria che il progetto dell'app

Esporta la tua app come APK firmato mentre Build Automatically è ancora disabilitato


Grazie hai lavorato per me per il mio progetto cocos2dx js usando adt eclipse 23
snowflakes74

Errore: opzione sconosciuta "0409" nell'argomento numero 1
Iman Marashi,

30

Ecco un altro scenario e una soluzione:

Se si riscontra questo problema di recente dopo aver aggiornato ADT per Eclipse:

  1. Nel progetto dell'app, verificare la presenza di eventuali cartelle di origine collegate che puntano ai progetti della libreria (hanno nomi nel formato "LibraryName_src").
  2. Seleziona tutti quei progetti, fai clic con il tasto destro del mouse, scegli " Build Path " -> " Rimuovi dal Build Path ".
  3. Scegli " Scollega anche la cartella dal progetto " e fai clic su " ".
  4. Pulisci, ricostruisci e ridistribuisci il progetto.

Sembra che il motivo sia che alcune versioni precedenti di ADT hanno collegato le cartelle di origine del progetto Library ai progetti "figlio" e l'attuale combinazione ADT / Dex non è più compatibile con quella soluzione.

MODIFICA: questo è confermato da un blog Android Dev Blog, in particolare questo - vedi l'ottavo paragrafo in poi.


1
Questa è di gran lunga la risposta più utile al mio problema particolare . Grazie mille!!!
Bill The Ape,

Questo è ciò che potrei usare con successo, non la risposta altamente votata dall'utente408841.
rics

29

Vai su Progetto e quindi deseleziona "Crea automaticamente". Quindi prova a esportare il progetto e l'errore scompare.


27

Questo può essere causato anche se hai aggiunto Android.jarfile al tuo percorso di compilazione, forse da una correzione rapida accidentale in Eclipse. Rimuovilo con il tasto destro del mouse su Progetto -> percorso di costruzione -> configura percorso di costruzione -> android.jar , rimuovi.


25

La semplice pulizia del progetto ha funzionato per me ogni volta che si è verificato questo errore.


Riavvio di Eclipse + pulizia del progetto + creazione manuale ha funzionato per me.
dodgy_coder,

La pulizia ha funzionato per me .... quindi se hai una buona build di debug che hai eseguito su telefoni reali e poi vai a rilasciare l'esportazione e vedere questo errore ... prova prima a pulire tutti i progetti.
lepert

16

La mia unica e unica soluzione che ho trovato oggi dopo quattro ore di test di tutte le soluzioni, è una combinazione di molte soluzioni fornite qui:

  • Delete progetto di Eclipse
  • Elimina i file nella \bine \gendalla cartella del progetto
  • Rimuovere i riferimenti alle librerie nel .classpathfile nella cartella del progetto principale
  • Riavvia Eclipse con la riga di comando: eclipse -clean
  • Import progetto
  • Fare clic destro sul progetto - selezionare Properties> Java Build Path>Libraries e rimuovere tutto il resto diAndroid XX.Y
  • Finalmente cleanprogetto, attendi la costruzione automatica oBuild esso
  • Lancia e ora funziona! Almeno per me...

Ho provato ogni passaggio alla volta e molte combinazioni, ma solo la successione di tutti i passaggi alla volta ce l'ha fatta! Spero di non dover affrontare di nuovo questo ...


C'è stato un avvertimento da parte di un utente anonimo che questo ha avuto risultati disastrosi. Prova a tuo rischio!
PaulG

funziona per me ma non l'ho fatto: "eclipse -clean" e non ho rimosso le librerie.
NicoMinsk,

L'eliminazione della bincartella l'ha fatto per me.
boltup_im_coding del

14

Solo per le altre persone che hanno ancora questo problema e hanno provato le risposte di cui sopra ma hanno comunque riscontrato l'errore (che era il mio caso), la mia soluzione è stata quella di eliminare il progetto da Eclipse e reimportarlo di nuovo.

Ciò ha reso la libreria Android da aggiungere nuovamente alle mie librerie referenziate, quindi ora ho due file JAR Android referenziati, quindi ne ho cancellato uno e ora si compila bene.

Soluzione: eliminare il progetto da Eclipse IDE e quindi reimportarlo di nuovo, quindi verificare le soluzioni precedenti.


Grazie! Questo mi ha aiutato da zero.
Herbert,

10

Oggi ho affrontato questo problema. La pulizia e la ricostruzione non hanno risolto il problema. Anche l'eliminazione e la reimportazione del progetto non sono state utili.

L'ho finalmente rintracciato in una brutta aggiunta al mio file .class. Penso che questo sia stato aggiunto dagli strumenti del plug-in quando stavo cercando di risolvere un altro problema, rimuovendolo ho eliminato l'errore di costruzione "Conversione nel formato Dalvik fallito con errore 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

Per me, nel mio percorso di costruzione era apparso un riferimento JAR aggiuntivo. L'ho eliminato e funziona ora.


8

Il mio problema era causato dall'ADT versione 12.0 e dall'integrazione ProGuard. Questo errore è ben documentato e la soluzione è nella documentazione

La soluzione è qui

Riga di comando di ProGuard


Grazie Croc, non credo che il bug sia ben documentato - non l'ho trovato dopo aver cercato un'ora per una soluzione.
Kevin,

Probabilmente stai scrivendo: il problema è che un singolo messaggio di errore ha troppe cause. Google dovrebbe avere qualche messaggio in più per aiutare gli utenti a delineare il problema. Puoi consolarti nel fatto che mi sono occorsi due giorni per risolvere il problema quando l'ho riscontrato ...
Croc

Il commento 11 nella pagina di discussione dei bug collegati ha risolto il problema qui: imposta l'output di build su Verbose (da Finestra> Preferenze> Android> Build) e cerca JAR o le classi che il compilatore sta usando ma non dovrebbe essere lì. Rimuovili. Esperienza ricostruita senza alcun problema.
Giulio Piancastelli,

8

Ho affrontato questo problema quando ho usato la libreria Sherlock ActionBar nel mio progetto. Potresti fare il seguente passo, è lavoro per me.

  1. Fare clic con il tasto destro del mouse sul progetto, selezionare Proprietà.
  2. Verrà visualizzata una finestra di dialogo, selezionare "Percorso build Java" nel menu a sinistra.
  3. Rimuovi "Dipendenze Android" e "Librerie private Android" nel pannello di destra, quindi fai clic su OK
  4. Pulisci il tuo progetto (seleziona il menu Progetto -> Pulisci)
  5. Fare clic con il tasto destro del mouse sul progetto, selezionare Strumenti Android -> Correggi proprietà progetto
  6. Progetto pulito ancora una volta.
  7. Riavvia il tuo computer
  8. Apri eclipse ed esporta apk

Spero che ti possa aiutare.


Il loro messaggio di errore dovrebbe essere più specificato. Mi risparmia tempo. Grazie.
Teapeng,

7

Nel mio caso il problema riguarda effettivamente il progetto API OpenFeint. Ho aggiunto OpenFeint come progetto di biblioteca:

library project]! [1]! [Inserire qui la descrizione dell'immagine.

Viene anche aggiunto al percorso di compilazione, gli strumenti ADT 16 danno errore con questo scenario.

Fai clic con il pulsante destro del mouse sul progetto e fai clic sul percorso di creazione, configura il percorso di creazione, quindi visualizza l'immagine e rimuovi il progetto OpenFeint da qui e tutto è fatto :)

Inserisci qui la descrizione dell'immagine


7

Ho trovato qualcos'altro. Android utilizza la /libsdirectory per i file JAR. Ho visto più volte l'errore "Conversione nel formato Dalvik fallito con errore 1", sempre quando ho fatto un errore nei miei file JAR.

Ora ho aggiornato Roboguice a una versione più recente, inserendo il nuovo file JAR nella /libsdirectory e passando il percorso della classe alla nuova versione. Ciò ha causato l'errore Dalvik.

Quando ho rimosso uno dei file JAR Roboguice dalla /libscartella, l'errore è scomparso. Apparentemente, Android raccoglie tutti i file JAR da /libs, indipendentemente da quelli specificati nel percorso di generazione Java. Non ricordo esattamente, ma penso che Android abbia iniziato a utilizzare /libsper impostazione predefinita a partire da Android 4.0 (Ice Cream Sandwich, ICS).


7

L'aggiornamento di Proguard all'ultima versione lo ha risolto per me.

  • Il mio percorso proguard era C:\Program Files (x86)\Android\android-sdk\tools\proguard\
  • Ho scaricato la nuova versione da qui
  • e ha sostituito le cartelle bin e lib

GRAZIE DIO!


7

In generale, sembra che questo problema si presenti quando ci sono file JAR non necessari nel percorso di compilazione.

Ho riscontrato questo problema mentre lavoravo su IntelliJ IDEA . Per me è successo perché ho aggiunto JUnit librerie e Mockito che venivano compilate in fase di esecuzione. Questo doveva essere impostato su "testing" nelle proprietà del modulo.


Oh, grazie per aver menzionato "In generale, sembra che questo problema si verifichi quando ci sono vasi inutili nel percorso di costruzione". Dopo aver eliminato il file jar non necessario, l'errore è sparito. :)
surendran,

6

Nessuna delle soluzioni precedentemente proposte ha funzionato per me. Nel mio caso, il problema si è verificato quando sono passato dal riferimento a una cartella del codice sorgente della libreria all'utilizzo del file JAR della libreria. Inizialmente esisteva un progetto di libreria Android elencato nella sezione Proprietà \ Pagina Android \ Libreria del progetto di applicazione Android e la libreria veniva confrontata anche nella struttura di Esplora progetti come collegamento alla directory di origine della libreria.

In primo luogo, ho appena eliminato il collegamento alla directory dall'albero del progetto e ho aggiunto la libreria JAR al percorso di compilazione, ma ciò ha causato l'eccezione.

La procedura corretta è stata (dopo aver modificato il percorso di compilazione e aver restituito il riferimento all'origine della libreria):

  • rimuovere correttamente il collegamento alla directory di origine della libreria rimuovendo effettivamente il riferimento dalla pagina Proprietà \ Android del progetto dell'applicazione

  • aggiungendo la JAR della libreria al percorso di creazione del progetto dell'applicazione come al solito.


6

Nessuna delle soluzioni elencate ha funzionato per me.

Ecco dove stavo avendo un problema:

Ho aggiunto il file JAR esterno jSoup al percorso del mio progetto inserendolo prima in una cartella di origine denominata "libs", quindi facendo clic con il tasto destro del mouse su Build Path -> aggiungi al percorso di build. Questo ha gettato l'errore di conversione di Dalvik. Diceva che avevo "già incluso" una classe da quel file JAR. Ho guardato intorno alla directory del progetto e ho scoperto che il posto in cui era "già incluso" era in realtà la bindirectory. Ho eliminato il file JAR dalla bindirectory e aggiornato il progetto in Eclipse e l'errore è andato via!


5

Tutte le soluzioni sopra non hanno funzionato per me. Non sto usando alcun .jar precompilato. Sto usando gli errori LVL e Dalvik, tutti correlati alla libreria delle licenze di mercato.

Il problema è stato risolto eliminando il progetto principale e reimportandolo (creare un nuovo progetto da fonti esistenti).


5

Ho avuto lo stesso problema e nessuna di queste soluzioni ha funzionato. Infine, ho visto nella console che l'errore era dovuto a una classe duplicata (una nel progetto esistente, una nel file jar aggiunto):

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

Quindi controlla se stai aggiungendo jar con classi duplicate nel tuo progetto. Se sì, prova a rimuoverne uno.

Ha funzionato per me.



5

Spesso per me la pulizia del progetto NON risolve questo problema.

Ma chiudere il progetto in Eclipse e riaprirlo sembra risolverlo in quei casi ...


1
Lo stesso per me, chiudendo Eclipse e riavviandolo di solito lo risolve. Poi provo, ma non riesco a fare una seconda esportazione, devo riavviare di nuovo.
Ted

5

Ho riscontrato questo problema ma la mia soluzione era duplice. 1.) Ho dovuto aggiungere una versione di destinazione Android nel progetto -> proprietà -> Android . 2.) Non avevo tutti i "componenti aggiuntivi" di Google. Fare clic in AVD SDK Manager sotto dei pacchetti disponibili, -> di terze parti componenti aggiuntivi -> Google Inc . Ho scaricato tutti gli SDK e questo ha risolto il mio problema.


La mia soluzione era praticamente la stessa della soluzione di @THE_DOM. Fai clic con il pulsante destro del mouse sul progetto, scegli Strumenti Android, quindi Aggiungi libreria compatibilità. Questo scaricherà quei "componenti aggiuntivi di terze parti" se non li hai (soluzione di THE_DOM), ma li aggiungerà anche al tuo progetto. È ancora da vedere se questa soluzione è solo un placebo o meno. :)
Chris,

5

Sto usando Android 1.6 e avevo un file JAR esterno. Quello che ha funzionato per me è stato rimuovere tutte le librerie, fare clic con il pulsante destro del mouse sul progetto e selezionare Strumenti Android -> * Correggi proprietà progetto (che ha aggiunto Android 1.6) e quindi ha aggiunto nuovamente il file JAR esterno.


5

Mi sono imbattuto in questo problema perché il plug-in Android-Maven in Eclipse apparentemente non riconosceva riferimenti transitivi e riferimenti referenziati due volte da un paio di progetti (incluso un progetto di libreria Android) e li includeva più di una volta. Ho dovuto usare hocus-pocus per includere tutto una sola volta, anche se Maven dovrebbe occuparsi di tutto ciò.

Ad esempio, avevo una libreria core globalmentor-core, utilizzata anche da globalmentor-google e globalmentor-android (quest'ultima delle quali è una libreria Android). Nel globalmentor-androidpom.xml ho dovuto contrassegnare la dipendenza come "fornita" oltre che esclusa da altre librerie in cui era transitivamente inclusa:

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

Quindi, nell'applicazione finale, pom.xmlho dovuto usare il trucco giusto per consentire solo un percorso di inclusione, oltre a non includere esplicitamente la libreria 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>

La cosa strana per me era che <extractDuplicates>true</extractDuplicates>nel plug-in android-maven risolto il problema, mvn installma non per mvn deploydove ho ricevuto l'errore descritto ... davvero strano
Karussell,

5

Nel mio caso

project-> properties-> java build path -> nella scheda order and export -> deseleziona android-support-v4.jar


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.