Impossibile eseguire dex: più file dex definiscono l'array Lcom / myapp / R $;


391

Dall'aggiornamento a ADT14 non riesco più a costruire il mio progetto. Stava costruendo bene prima dell'aggiornamento.

L'errore:

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

Problemi simili sono stati segnalati e ho provato i suggerimenti lì compresi

  • Riavvio Eclipse.
  • Pulizia del progetto e ricostruzione - Disabilita l'opzione "Progetto-> Crea automaticamente", quindi il progetto "Pulisci" e "Crea", quindi prova a eseguire. reimpostare l'opzione "Crea automaticamente" su Attiva
  • Reinstalla gli AndroidStrumenti per gli sviluppatori
  • Reinstalla Eclipse (aggiornato all'ultima versione 3.7.1)
  • Creato un nuovo progetto importando dal file system
  • Creato un nuovo progetto da sovversione.

stavi lavorando su Windows o Mac .. perché vorrei seguire le seguenti risposte, ma non sono sicuro che funzioneranno su Mac .. grazie
McLan

se hai importato un progetto di libreria e hai anche importato JAR di libreria nella cartella lib, devi rimuovere il file jar dalla cartella lib e anche da [Percorso build -> Configura percorso build]. E funzionerà.
Mehul,

Guarda la mia risposta sul seguente link. stackoverflow.com/a/38391449/3702595
Sattar Hummatli

Risposte:


462

Ho avuto lo stesso problema, abbastanza strano perché stava accadendo solo quando si utilizza Eclipse (ma andava bene con Ant). Ecco come l'ho risolto:

  • Fare clic destro su Project Name
  • Seleziona Build Path->Configure Build Path
  • In Java Build Path, vai alla schedaOrder and Export

  • Deseleziona la tua .jarlibreria

Solo a volte: nella scheda Ordine ed Esportazione non avevo alcuna libreria jar lì, quindi ho deselezionato l'elemento Librerie private Android. Ora il mio progetto è in corso.


Nel mio progetto, stavo includendo la libreria di supporto dalla directory sdk nel mio percorso di compilazione e avevo la libreria di supporto nella cartella "libs" per il supporto della costruzione di formiche. Ne ho deselezionato uno e il problema è stato risolto.
Chris Feist,

20
Qualche tempo tra l'ultima volta che ho costruito e lanciato, una nuova libreria è apparsa misteriosamente nel mio progetto: "Librerie private Android" contenenti la libreria di supporto a cui stavo già facendo riferimento. Così è apparso questo misterioso "più file dex definiscono ____". Controllando il Java Build Path e vedendo questo nuovo elemento, e deselezionando la libreria di supporto inclusa originariamente ho risolto il problema per me.
Tom Pace,

9
Molte grazie. Questa è la soluzione corretta Davvero non so perché eclissi abbia così tanti bug. Ora la situazione è che solo 2 ore posso codificare e 6 ore devo trovare una soluzione a questo tipo di problemi inutili.
Roy Matthew

44
Nella scheda Ordine ed Esportazione non avevo alcuna libreria jar, quindi ho deselezionato l' Android Private Librarieselemento. Ora il mio progetto è in corso.
Junior Mayhé,

1
Nel mio caso avevo una pubblicazione di "android-support-v4.jar". Quando l'ho eliminato , l'errore è andato via
ymerdrengene,

94

Il mio problema è stato risolto dopo aver ripulito alcune directory e file rimasti dalle versioni precedenti degli strumenti. ADT Rev 14 cambia la posizione in cui sono archiviati i file binari . Ho cancellato l'intera directory bin, riavviato Eclipse e ripulito la build e forzato una ricostruzione. Sembrava inizialmente fare il trucco, ma il problema è tornato dopo la corsa successiva.

Alla fine ho scoperto che la mia directory bin era inclusa nel percorso di compilazione del progetto. Ho escluso bin dal percorso di compilazione e ripetuto i passaggi precedenti. Questo ha risolto il mio problema.


42
Che diamine Google. Questo problema continua a tornare anche con R15.
Terry,

2
Ho modificato la soluzione sopra per includere la risoluzione finale. Risolto definitivamente ora.
Terry,

7
In breve, nessuno sa davvero perché il problema si verifichi, cosa significhi e come risolverlo (non ho alcuna directory bin nel Java Build Path). Ho evitato l'aggiornamento a R15 per questi motivi, rimanendo con R9. Ma ho ancora un problema simile , senza alcun indizio in vista. Qualsiasi consiglio o aiuto sarebbe molto apprezzato.
Bill The Ape

6
@BillTheApe - concordato. Questo è oltre frustrante, è costoso.
Tom Redman,

@TRedman Finalmente sono riuscito a risolvere il problema . Senza capire il perché. Non ridere. LOL +1.
Bill The Ape,

50

[Risolto per me]

Proprietà del progetto Eclipse-> Percorso di compilazione Java-> Ordine ed esportazione

Deseleziona le librerie private Android.


4
Non ha aiutato nel mio caso
Redux,


46

Nessuna delle precedenti ha aiutato. Alla fine è stato un problema semplice.

Ho avuto un progetto che utilizza FacebookSDK e ViewPagerIndicator come progetti di biblioteche. Tutti erano costruiti su API 16 Android e quei due progetti utilizzavano la libreria di supporto Android vX (X non essendo 16!)

Ho aggiunto un JAR esterno a entrambi quei progetti e l'ho puntato su \ extras \ android \ v4 ... E ho anche rimosso il vaso v4 che avevo nelle loro cartelle libs.

Pulisci tutti i progetti e ricostruisci.

Voilla!

L'errore esatto che stavo ricevendo: Impossibile eseguire dex: più file dex definiscono Landroid / support / v4 / view / PagerAdapter; Conversione nel formato Dalvik non riuscita: impossibile eseguire dex: più file dex definiscono Landroid / support / v4 / view / PagerAdapter;


36

Questo problema mi stava accadendo, avevo un file .jar esterno nella mia cartella libs chiamato gson-2.2.2.jar ma per qualche ragione ce n'erano due, gson-2.2.2.jar e gson-2.2.2.jar ( 1), ho semplicemente cancellato quest'ultimo e il mio progetto è stato ricostruito correttamente.


2
Ho avuto un problema simile quando c'era un vecchio file jar nella cartella libs e lo collegavo a un nuovo vaso nello stesso spazio di lavoro. Quando ADT trova più definizioni per lo stesso simbolo, inserisce un errore come questo. L'eliminazione del vecchio file jar nella cartella libs lo ha riparato per me.
phyatt,

Il vaso esterno è una delle cause del problema e lo è stato anche nel mio caso. Ho appena avuto un vaso rimanente nel mio /libsda un precedente esperimento, risultante sia in un Progetto Biblioteca che nel file .jar che è stato generato da esso. L'eliminazione di quel vaso sotto /libsrisolve il problema. +1
ripopenid

31
  1. Chiudi eclissi.
  2. Elimina la cartella bin all'interno della cartella del progetto.
  3. Inizia eclissi e pulisci il tuo progetto.
  4. Ora corri e il problema dovrebbe essere sparito

La risposta di Mateus Viccari ha risolto il mio problema, ho rimosso le librerie duplicate e funziona come un incantesimo ..
swiftBoy

Ha funzionato per me.Se venissi manifest filerimosso da eclipse dalla bindirectory, aggiungilo manualmente e pulisci di nuovo il progetto.
Mehul Joisar,

Per me va bene. Assicurati anche di non avere lo stesso .jar in due posti diversi (nel mio caso l'ho avuto sia in un progetto di libreria che in un progetto che faceva riferimento a quel progetto di libreria. Sembra che Eclipse lo abbia aggiunto automaticamente per qualche motivo)
Magnus W

Per me, ho appena pulito TUTTO lo spazio di lavoro. Semplicemente pulire il progetto non era abbastanza. Credo che il mio problema abbia avuto a che fare con il passaggio da uno dei progetti a "Library" nel bel mezzo di un'operazione pulita
tricknology

Non ha aiutato nel mio caso
Redux

26

Come altri hanno già detto, ciò si verifica quando nel percorso di compilazione sono presenti più copie della stessa classe, incluso bin / nel percorso di classe è un modo per garantire questo problema.

Per me, questo si è verificato quando ho aggiunto android-support-v4.jar alla mia cartella libs /, e in qualche modo eclipse ha aggiunto una seconda copia a bin / classes / android-support-v4.jar.

L'eliminazione della copia aggiuntiva in bin / classi ha risolto il problema - incerto sul perché Eclipse ne abbia fatto una copia.

Puoi provare per questo con

grep -r YourOffendingClassName YourApp | vaso grep


23

Per me, faccio semplicemente clic con il tasto destro sul progetto -> Percorso build -> configura percorso build -> Librerie -> rimuovi dipendenza

dopo che funziona.


20

Questo errore può verificarsi se hai due vasetti che contengono gli stessi nomi di classe, ad esempio avevo due librerie: jsr311-api-1.1.1.jar e jersey-core-1.17.1.jar, entrambi contenenti la classe javax.ws .rs.ApplicationPath. Ho rimosso jsr311-api-1.1.1.jar e ha funzionato bene.


1
Questa è la soluzione perfetta per me. Ho aggiunto le stesse librerie due volte. Grazie.
swiftBoy,

19

Stavo ricevendo questo errore dopo aver aggiunto facebooksdk.jar a un progetto che aveva già dipendenze da android-support-v4.jar . Poiché facebooksdk.jar include già il proprio Android-support-v4.jar, si sono verificati conflitti. La rimozione del precedente android-support-v4.jar dai progetti Proprietà / Percorso build Java / Librerie ha risolto il problema per me.


18

Vai su Progetto / proprietà e Percorso di costruzione Java e deseleziona le Librerie private Android .

Questo è anche un altro caso per questo tipo di errore

Fatto


15

Ho rimosso le dipendenze Android dal percorso di creazione e ha funzionato.

Modifica: ignoralo. Avevo lo stesso barattolo nella mia cartella dipendenze e libs di Maven. Ho rimosso quello nella cartella lib.


2
La rimozione delle dipendenze Android dal percorso di creazione ha interrotto il mio progetto. Fortunatamente è stato facile ripristinarlo facendo clic con il tasto destro del mouse sul progetto> Strumenti Android> Correggi proprietà progetto.
Azdev,

In alcuni casi la rimozione delle dipendenze Android e la sua rigenerazione risolvono alcuni problemi. Ma come nella mia modifica non è così.
Hadi Tok,

9

Probabilmente hai installato r14 , questo errore potrebbe essere stato causato a causa dell'aggiornamento degli strumenti della piattaforma, devi reinstallare il tuo sdk


Ho appena spazzato via completamente il mio SDK e l'ho installato dal file zip scaricato, quindi ho caricato le API Android con Android SDK Manager. Avevo grandi speranze, ma il problema persiste.
Terry,

C'è una cartella nascosta .android in Windows, dovresti eliminarla anche tu.
Reno,

esiste lo stesso problema
McLan

9

Per me questo problema esiste solo finché ci sono progetti di librerie Android coinvolti nel mio progetto. Quindi, quando rimuovo tutte le librerie e faccio come hai detto, posso eseguire di nuovo la mia app. Se ci sono librerie coinvolte, anche il trucco della rimozione dei bin non funzionerà.

Non capisco perché questo bug sia apparso per la prima volta oggi da quando uso ADT 14 da diversi giorni. Beh, c'erano altri bug che mi rendevano felice comunque.


Molte delle soluzioni sembrano roba da voodoo ... :)
Jasper,

8

L'eliminazione della cartella bin non è stata sufficiente, ho anche eliminato la cartella gen. Quindi dopo due ricostruzioni il messaggio di errore dex era sparito.


8

Selezionare il progetto in Esplora progetti , fare clic con il tasto destro del mouse e selezionare Proprietà -> Percorso build Java -> Origine -> Selezionare la casella Consenti cartelle di output per le cartelle di origine


Non ha aiutato il mio caso.
Redux,

8

Sostanzialmente stavo affrontando lo stesso problema. Ho eliminato la cartella BIN, quindi ho rimosso i file jar inutilizzati per l'ordinazione e l'importazione da eclipse. Dopodiché ha funzionato


7

Sono in ritardo a questa festa, ma aggiungendo la mia esperienza personale per ritrovarla più tardi :)

Ho riscontrato questo problema dopo aver aggiornato gli annunci Android sdk ed eclipse. Nessun aggiornamento rimane impunito!

Il problema per me era legato a progetti di biblioteche, la mia app fa riferimento sia a progetti Java standard che a progetti di librerie Android. Ho notato che le impostazioni di Java Build Path includevano i progetti della libreria android cartelle src e res nell'elenco Sorgente (i voti a tutti quelli che menzionano bin in source sono stati problemi, anche src e res erano un problema).

Quindi la soluzione era:

  1. Rimuovere tutti i riferimenti sorgente e progetto delle librerie Android referenziati dalla sezione Percorso build Java delle impostazioni nell'elenco Elenco sorgenti e Elenco progetti
  2. Assicurati che le dipendenze java pure siano elencate nell'elenco Progetto e Controllate nella scheda Ordine ed Esportazione in modo che le classi siano incluse nell'apk
  3. Assicurati che tutte le dipendenze delle librerie Android siano elencate nella sezione Android delle proprietà del progetto, nella sezione delle librerie sotto le versioni SDK verificate.

Era lungo il modo di mettere tutto insieme dalle altre soluzioni! Accidenti!


Ben dichiarato! Sono arrivato a conclusioni identiche dopo molto lavoro. Volevo solo aggiungere che se uno qualsiasi dei tuoi progetti di libreria include altri progetti di libreria o dipendenze pure-Java, devono essere aggiunti tutti allo stesso modo, altrimenti si verificherà questo errore. Se segui le regole sopra per tutti i tuoi progetti, non dovresti avere problemi.
Strangeluck,

1
Un'altra cosa ... sembra che se non è necessario esportare le librerie private Android di un progetto o di un progetto di libreria, non farlo. Se più di un progetto o di un progetto di libreria lo esporta, verrà visualizzato l'errore per più file dex.
Strangeluck,

6

Mi sono imbattuto in questo quando ho aggiornato da adt 14 a 15 e per farlo funzionare ho finito semplicemente cancellando la cartella .eclipse (insieme alle mie impostazioni) e reinstallando adt 15.


6

Dopo aver letto la risposta di Terrys sull'eliminazione della directory bin e Larrys sulla posizione della directory ANT:

Ho spostato i file che si trovano nella directory BIN dei miei progetti in BIN / CLASSES e sono attivo e funzionante.

Modifica 1 Quindi fallito al secondo avvio ... doh

Modifica 2 Così chiuso Eclipse ha spostato i file nella posizione originale e tutto funziona ... ehm? Non pretendo di sapere perché ha funzionato. Si aggiornerà in caso di modifiche.

Modifica 3 Ho notato dai miei backup che c'erano effettivamente file duplicati nella directory BIN e BIN / CLASSES.

Quindi la risposta è: non avere file in entrambe le posizioni. Almeno per me è quello che ha funzionato.


Cerca di ridurre le risposte a: Conclusioni utili seguite da fatti a sostegno . Evita la storia narrativa AMAP; Le persone tendono a segnalarlo, pensando che "non è una risposta".
Brock Adams,

applausi per questo, ogni aiuto per rendere più chiare le mie divagazioni è apprezzato
HostMyBus

6

Modifica il tuo file eclipse.ini e imposta il parametro di memoria massima su

-Xmx1024m

Quindi riavviare il computer.

Ha funzionato per me.


1
Nulla di correlato, dare più memoria non risolve i problemi di dipendenza
Sierisimo,

6

ho trovato una soluzione credo ??

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

Dove dice: "Lcom / coremedia / iso / AbstractBoxParser $ 1" che sembra essere la posizione della libreria che ho importato che stava causando il problema. Ho cercato com.codemedia.iso.AbstractBoxParser $ 1.class e .AbstractBoxParser.class .... ha preso quel barattolo, lo ha spacchettato, rimosso entrambi quei file, quindi riconfezionato come .zip, aggiunto alla libreria, pulito e funzionato! niente più conflitti per me! (anche nessun aggiornamento o download aggiuntivo)


6

Avevo due diverse versioni di Cordova .jar-files nella mia cartella libs, ho cancellato quella che non stavo nemmeno usando e ha funzionato immediatamente. Strano perché non me ne sono accorto prima e ha funzionato prima e poi improvvisamente ha smesso di funzionare ...



5

Soluzione per me:

  1. BACKUP DEL TUO CODICE!
  2. Passare all'area di lavoro del progetto (non al progetto) ed eseguire i comandi seguenti:

    dev1: area di lavoro $ cd ~ / Documents / workspace / .metadata / .plugins / dev1: area di lavoro $ rm -rf org.eclipse.core.resources

  3. Passare alla directory di Eclipse e digitare questo comando:

    dev1: eclipse $ ./eclipse clear

  4. Eclipse inizierà con uno spazio di lavoro vuoto: non preoccuparti, i tuoi progetti sono ancora lì. Semplice creare un nuovo progetto da risorse esistenti e le cose dovrebbero essere sugo.

L'esatto errore che stavo ricevendo: [2012-02-07 14:15:53 ​​- Caricatore Dex] Impossibile eseguire dex: più file dex definiscono Landroid / support / v4 / view / PagerAdapter; [2012-02-07 14:15:53 ​​- ProjectCloud] Conversione nel formato Dalvik non riuscita: impossibile eseguire dex: più file dex definiscono Landroid / support / v4 / view / PagerAdapter;


5

Ho diversi progetti di libreria con lo stesso nome di pacchetto specificato in AndroidManifest (quindi nessun nome di campo duplicato viene generato da R.java). Ho dovuto rimuovere tutte le autorizzazioni e le attività da AndroidManifest.xml per tutti i progetti di libreria per rimuovere l'errore, quindi Manifest.java non è stato creato più volte. Spero che questo possa aiutare qualcuno.


4

Dopo aver provato tutti gli altri suggerimenti senza fortuna, ho eliminato tutto il contenuto della directory 'bin' dei miei progetti, quindi ho eseguito di nuovo eclipse e ha funzionato.


4

Ho convertito un progetto non di libreria in un progetto di libreria, ma aveva un file jar precedentemente creato nella cartella libs. La rimozione di questo file jar ha causato la scomparsa di questo errore.


4

Stavo affrontando lo stesso problema, quindi ho visto mentre spingevo la mia app alcuni file jar che erano stati caricati due volte, quindi più errori dex. Basta andare alle proprietà del progetto -> Java Build Path e provare a deselezionare il jar che viene caricato due volte.


4

[Risolto per me]

rimuovendo la libreria duplicata "file JAR", quindi rimuovere il file BuildConfig.java, il progetto Clean e il suo lavoro.

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.