Não foi possível executar o dex: vários arquivos dex definem a matriz Lcom / myapp / R $;

391

Desde a atualização para ADT14, não consigo mais construir meu projeto. Estava construindo bem antes da atualização.

O erro:

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

Problemas semelhantes foram relatados e tentei as sugestões, incluindo

  • Reiniciando Eclipse.
  • Limpando o projeto e reconstruindo - Desative a opção "Projeto-> Construir Automaticamente", depois o projeto "Limpar" e "Construir" e tente executar. redefina a opção "Criar automaticamente" para Ativado
  • Reinstalando as AndroidFerramentas do Desenvolvedor
  • Reinstalando o Eclipse (atualizado para a versão mais recente 3.7.1)
  • Criou um novo projeto importando do sistema de arquivos
  • Criou um novo projeto a partir do subversion.
terry
fonte
você estava trabalhando no Windows ou Mac .. porque eu gostaria de seguir as seguintes respostas, mas eu não tenho certeza se eles estão indo para o trabalho no mac .. obrigado
McLan
se você importou o projeto da biblioteca e também importou o JAR da biblioteca na pasta lib, é necessário remover o arquivo jar da sua pasta lib e também de [Caminho da Construção -> Configurar Caminho da Construção]. E será trabalhado.
Mehul 13/01
Veja a minha resposta no seguinte link. stackoverflow.com/a/38391449/3702595
Sattar Hummatli

Respostas:

462

Eu tive o mesmo problema, bastante estranho, porque isso estava acontecendo apenas ao usar o Eclipse (mas estava tudo bem com o Ant). Foi assim que eu consertei:

  • Clique com o botão direito do mouse no Project Name
  • Selecione Build Path->Configure Build Path
  • Em Java Build Path, vá para a guiaOrder and Export

  • Desmarque sua .jarbiblioteca

Apenas algumas vezes: na guia Ordem e exportação, não havia nenhuma biblioteca jar lá, por isso desmarquei o item Bibliotecas particulares do Android. Agora meu projeto está em execução.

Marco Bonifazi
fonte
No meu projeto, eu estava incluindo a biblioteca de suporte do diretório sdk no meu caminho de construção e eu tinha a biblioteca de suporte na pasta "libs" para suporte à construção de formigas. Desmarquei uma e ela corrigiu o meu problema.
Chris Feist
20
Em algum momento entre a última vez que construímos e lançamos, uma nova biblioteca apareceu misteriosamente em meu projeto: "Bibliotecas Particulares do Android" contendo a biblioteca de suporte que eu já estava referenciando. Então, esses misteriosos "múltiplos arquivos dex definem ____" apareceram. Verificar o caminho de construção do Java e ver este novo item e desmarcar a biblioteca de suporte incluída originalmente resolveram o problema para mim.
Tom Pace
9
Muito obrigado. Esta é a solução correta. Eu realmente não sei por que o eclipse tem tantos erros. Agora, a situação é de apenas 2 horas que eu posso codificar e 6 horas eu tenho que encontrar solução para esse tipo de problemas desnecessários.
roy mathew
44
Na guia Ordem e exportação, não havia nenhuma biblioteca jar lá; portanto, desmarquei o Android Private Librariesitem. Agora meu projeto está em execução.
Junior Mayhé
11
No meu caso, eu publiquei o ' android-support-v4.jar'. Quando eu eliminado isso, o erro foi embora
ymerdrengene
94

Meu problema foi resolvido após a limpeza de alguns diretórios e arquivos que sobraram das versões anteriores das ferramentas. O ADT Rev 14 muda onde os binários são armazenados . Excluí o diretório bin inteiro, reiniciei o Eclipse e limpei a construção e forcei uma reconstrução. Isso pareceu resolver o problema inicialmente, mas o problema voltou após a próxima execução.

Finalmente descobri que meu diretório bin foi incluído no caminho de construção do projeto. Excluí a lixeira do caminho da construção e repeti as etapas acima. Isso resolveu meu problema.

terry
fonte
42
Que diabos do Google. Esse problema continua voltando mesmo com o R15.
terry
2
Editei a solução acima para incluir a resolução final. Resolvido permanentemente agora.
terry
7
Em resumo, ninguém sabe realmente por que o problema ocorre, o que significa e como corrigi-lo (não tenho nenhum diretório bin no Java Build Path). Evitei atualizar para o R15 por esses motivos, permanecendo no R9. Mas ainda estou tendo um problema semelhante , sem nenhuma pista à vista. Qualquer dica ou ajuda seria muito apreciada.
Bill The Ape
6
@BillTheApe - concordou. Isso é além de frustrante, é caro.
Tom Redman
@ TRedman Finalmente consegui resolver o problema . Sem entender o porquê. Não ria LOL +1.
Bill The Ape
50

[Resolvido para mim]

Propriedades do projeto Eclipse-> Caminho de Construção Java-> Solicitar e Exportar

Desmarque as bibliotecas privadas do Android.

user802467
fonte
4
Não ajudou no meu caso
redux
11
Thanx muito me ajudou
madhu527
46

Nenhuma das opções acima ajudou. No final, foi um problema simples.

Eu tive um projeto que usa o FacebookSDK e o ViewPagerIndicator como projetos de biblioteca. Todos foram criados na API Android 16 e esses dois projetos usaram a biblioteca de suporte ao Android vX (X não tem 16 anos!)

Adicionei um JAR externo a esses dois projetos e apontei para \ extras \ android \ v4 ... E também removi o jar v4 que eu tinha nas pastas libs.

Limpe todos os projetos e recrie.

Voilla!

O erro exato que eu estava recebendo: Não foi possível executar o dex: vários arquivos dex definem Landroid / support / v4 / view / PagerAdapter; Falha na conversão para o formato Dalvik: Não é possível executar o dex: vários arquivos dex definem Landroid / support / v4 / view / PagerAdapter;

Roy Weinberg
fonte
36

Esse problema estava acontecendo comigo, eu tinha um .jar externo na minha pasta libs chamado gson-2.2.2.jar, mas por algum motivo havia dois deles, gson-2.2.2.jar e gson-2.2.2.jar ( 1), simplesmente apaguei o último e meu projeto foi bem desenvolvido novamente.

Tom Selleck
fonte
2
Eu tive um problema semelhante quando havia um arquivo jar antigo na pasta libs e o vinculei a um jar mais novo no mesmo espaço de trabalho. Quando o ADT encontra várias definições para o mesmo símbolo, ocorre um erro como este. A exclusão do arquivo jar antigo na pasta libs o corrigiu para mim.
Phyatt #
Jar externo é uma das causas do problema e também aconteceu no meu caso. Eu só tinha um jarro restante no meu /libsde um experimento anterior, resultando em um Projeto de Biblioteca e no .jar que foi gerado a partir dele. A exclusão desse frasco /libsresolve o problema. +1
ripopenid 6/12/2013
31
  1. Feche o eclipse.
  2. Exclua a pasta bin dentro da pasta do projeto.
  3. Inicie o eclipse e limpe seu projeto.
  4. Agora corra e o problema deve ter desaparecido
Mohit marwal
fonte
De Mateus Viccari resposta resolveu o meu problema, eu removi libs duplicados, e funciona como charme ..
swiftBoy
Se você manifest filefor removido pelo eclipse do bindiretório, adicione-o manualmente e limpe o projeto novamente.
Mehul Joisar
Funciona para mim. Além disso, verifique se você não possui o mesmo .jar em dois lugares diferentes (no meu caso, eu o tive em um projeto de biblioteca e em um projeto que faz referência a esse projeto de biblioteca. Parece que o Eclipse acabou de adicioná-lo automaticamente por algum motivo)
Magnus W
Para mim, acabei de limpar o espaço de trabalho INTEIRO. Simplesmente limpar o projeto não foi suficiente. Eu acredito que o meu problema tinha a ver com a mudança um dos projetos a "Biblioteca" no meio de uma operação de limpeza
tricknology
Não ajudou no meu caso
redux 28/01
26

Como outros já mencionaram, isso ocorre quando você tem várias cópias da mesma classe no caminho de construção - incluir bin / no caminho de classe é uma maneira de garantir esse problema.

Para mim, isso ocorreu quando eu adicionei o android-support-v4.jar à minha pasta libs / e, de alguma forma, o eclipse adicionou uma segunda cópia ao bin / classes / android-support-v4.jar.

A exclusão da cópia extra em bin / classes resolveu o problema - sem saber por que o Eclipse fez uma cópia lá.

Você pode testar isso com

grep -r YourOffendingClassName YourApp | frasco grep

chaqke
fonte
23

Para mim, clique com o botão direito do mouse em projeto -> Caminho da compilação -> configurar caminho da compilação -> Bibliotecas -> remover dependência

depois que funciona.

sonida
fonte
20

Este erro pode ocorrer se você tiver dois jars que contêm os mesmos nomes de classe, por exemplo, eu tinha duas bibliotecas: jsr311-api-1.1.1.jar e jersey-core-1.17.1.jar, ambos contendo a classe javax.ws .rs.ApplicationPath. Eu removi o jsr311-api-1.1.1.jar e funcionou bem.

Mateus Viccari
fonte
11
Esta é a solução perfeita para mim. Eu adicionei as mesmas bibliotecas duas vezes. Obrigado.
swiftBoy
19

Eu estava recebendo esse erro depois de adicionar o facebooksdk.jar a um projeto que já tinha dependências no android-support-v4.jar . Como o facebooksdk.jar já inclui seu próprio android-support-v4.jar, houve conflitos. A remoção do android-support-v4.jar anterior dos projetos Properties / Java Build Path / Libraries resolveu o problema para mim.

user1293131
fonte
18

Vá para Project / properties e Java Build Path e desmarcou as Bibliotecas particulares do Android .

Este também é outro caso para esse tipo de erro

Feito

Hiren Patel
fonte
15

Eu removi as dependências do Android do caminho de construção e funcionou.

Edit: ignore isso. Eu tinha o mesmo jar na minha pasta de dependências e libs. Eu removi o da pasta lib.

Osha Mahue
fonte
2
Remover as dependências do Android do caminho da compilação interrompeu meu projeto. Felizmente, foi fácil restaurar clicando com o botão direito do mouse em projeto> Ferramentas Android> Corrigir propriedades do projeto.
azdev
Em alguns casos, remover as dependências do Android e regenerá-lo resolve alguns problemas. Mas, como na minha edição, esse não é o caso.
quer
9

Provavelmente você instalou o r14 , esse erro pode ter sido causado devido à atualização das ferramentas da plataforma, é necessário reinstalar o sdk

Reno
fonte
Afastei completamente o SDK, instalei-o a partir do arquivo zip baixado e carreguei as APIs do Android com o Gerenciador de SDK do Android. Eu tinha grandes esperanças, mas o problema persiste.
terry
Há uma pasta oculta .android no Windows, você também deve excluí-la.
Reno
existe o mesmo problema
McLan
9

Para mim, esse problema existe apenas enquanto houver projetos de biblioteca do Android envolvidos no meu projeto. Portanto, quando eu removo todas as bibliotecas e faço o que você disse, posso executar meu aplicativo novamente. Se houver bibliotecas envolvidas, até o truque de remoção de lixeira venceu.

Não entendo por que esse bug apareceu hoje, pois estou usando o ADT 14 há vários dias. Bem, houve outros erros que me mantiveram feliz.

mephju
fonte
Muitas das soluções parecem com algumas coisas voodoo ... :)
Jasper
8

Excluir a pasta bin não foi suficiente, eu também excluí a pasta gen. Depois de duas reconstruções, a mensagem de erro dex desapareceu.

Rudolf Polzer
fonte
8

Selecione o projeto no Project Explorer , clique com o botão direito do mouse e selecione Propriedades -> Caminho de Construção Java -> Origem -> Marque a caixa de seleção Permitir pastas de saída para pastas de origem

prasantasing
fonte
Não ajudou meu caso.
Redux
8

Eu estava basicamente enfrentando o mesmo problema. Excluí a pasta BIN e removi os arquivos jar não utilizados para Order e Import do eclipse. Funcionou depois disso

Ahsan Zaheer
fonte
7

Estou atrasado para esta festa, mas adicionando minha própria experiência para encontrá-la novamente mais tarde :)

Corri para esse problema depois de atualizar os anúncios do Android SDK e do Eclipse. Nenhuma atualização fica impune!

O problema para mim estava relacionado a projetos de bibliotecas, meu aplicativo faz referência a projetos java padrão e projetos de bibliotecas Android. Percebi que as configurações do Java Build Path estavam incluindo as pastas src e res dos projetos da biblioteca android na lista Fonte (upvotes para todos que mencionam bin na origem como issue, src e res também foi um problema).

Então a solução foi:

  1. Remova todas as referências de fontes e projetos de bibliotecas Android referenciadas da seção Caminho de Construção Java das configurações na lista Origem e lista Projeto
  2. Verifique se as dependências java puras estão listadas na lista Projeto e Marcadas na guia Ordem e exportação para que as classes sejam incluídas no apk
  3. Verifique se todas as dependências da biblioteca Android estão listadas na seção Android das propriedades do projeto, na seção biblioteca abaixo das versões verificadas do SDK.

Foi o caminho para juntar tudo isso das outras soluções! Ufa!

Jay
fonte
Bem afirmado! Cheguei a conclusões idênticas depois de muito trabalho. Eu só queria acrescentar que, se algum de seus projetos de biblioteca incluir outros projetos de biblioteca ou dependências de Java puro, eles deverão ser adicionados da mesma maneira, caso contrário, esse erro ocorrerá. Se você seguir as regras acima para todos os seus projetos, não deverá ter problemas.
strangeluck
11
Mais uma coisa ... parece que, se você não precisar exportar as Bibliotecas particulares do Android de um projeto ou projeto de biblioteca, não. Se mais de um projeto ou projeto de biblioteca o exportar, você receberá o erro de vários arquivos dex.
strangeluck
6

Eu me deparei com isso quando atualizei do adt 14 para o 15 e, para fazê-lo funcionar, acabei excluindo a pasta .eclipse (junto com minhas configurações) e reinstalando o adt 15.

Jake1164
fonte
6

Depois de ler a resposta do Terrys sobre a exclusão do diretório bin e Larrys sobre o local do diretório ANT:

Movi os arquivos localizados no diretório BIN dos meus projetos para o BIN / CLASSES e estou em funcionamento.

Edit 1 Então falhou na segunda execução ... doh

Editar 2 O Eclipse tão fechado moveu os arquivos de volta ao local original e está tudo funcionando ... hum o que? Não pretendo saber por que isso funcionou. Será atualizado se houver alguma alteração.

Editar 3 Observei nos meus backups que havia realmente arquivos duplicados no diretório BIN e no BIN / CLASSES.

Portanto, a resposta é: não tenha arquivos nos dois locais. Pelo menos para mim, foi o que funcionou.

HostMyBus
fonte
Tente reduzir as respostas para: Conclusão útil seguida de fatos de suporte . Evite a história AMAP narrativa; As pessoas tendem a sinalizar isso, pensando que "não é uma resposta".
Brock Adams
vivas para que, qualquer ajuda para fazer minhas divagações mais clara é apreciado
HostMyBus
6

Modifique seu arquivo eclipse.ini e configure o parâmetro máximo de memória para

-Xmx1024m

Depois reinicie o seu computador.

Funcionou para mim.

Truncarlos
fonte
11
Nada relacionado, dando mais memória não resolve os problemas de dependência
Sierisimo
6

encontrei uma solução eu acredito ??

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

Onde está escrito: "Lcom / coremedia / iso / AbstractBoxParser $ 1" que por acaso é o local da biblioteca que eu importei que estava causando o problema. Procurou por com.codemedia.iso.AbstractBoxParser $ 1.class e .AbstractBoxParser.class .... pegou o pote, descompactou-o, removeu os dois arquivos e depois empacotou-o como .zip, adicionado à biblioteca, limpo e funcionou! não há mais conflito para mim! (também não há atualizações ou downloads adicionais)

jp093121
fonte
6

Eu tinha duas versões diferentes dos arquivos .jar da Cordova na minha pasta libs, apaguei a que não estava usando e funcionou imediatamente. Estranho porque eu não percebi isso antes e funcionou antes e de repente parou de funcionar ...

Dediqated
fonte
5

A atualização do ADT R14 muda para onde as classes vão para o diretório bin / classes (consulte http://tools.android.com/recent/buildchangesinrevision14 ). Se você estiver usando o ANT, altere o caminho para suas classes de bin para bin / classes. Isso funcionou para mim.

Larry Borsato
fonte
Estou usando o Eclipse. Você sabe onde você altera o caminho da classe no Eclipse?
terry
5

Solução para mim:

  1. Faça backup do seu código!
  2. Navegue para o espaço de trabalho do seu projeto (não o seu projeto) e execute os seguintes comandos:

    dev1: espaço de trabalho $ cd ~ / Documents / workspace / .metadata / .plugins / dev1: espaço de trabalho $ rm -rf org.eclipse.core.resources

  3. Navegue para o diretório Eclipse e digite este comando:

    dev1: eclipse $ ./eclipse clear

  4. O Eclipse começará com um espaço de trabalho vazio - não se preocupe, seus projetos ainda estão lá. Simples criar novo projeto a partir de recursos existentes e as coisas devem ser molho.

O erro exato que eu estava recebendo: [2012-02-07 14:15:53 ​​- Dex Loader] Não foi possível executar o dex: vários arquivos dex definem Landroid / support / v4 / view / PagerAdapter; [2012-02-07 14:15:53 ​​- ProjectCloud] Falha na conversão para o formato Dalvik: Não foi possível executar o dex: vários arquivos dex definem Landroid / support / v4 / view / PagerAdapter;

Cookster
fonte
5

Eu tenho vários projetos de biblioteca com o mesmo nome de pacote especificado no AndroidManifest (portanto, nenhum nome de campo duplicado é gerado por R.java). Eu tive que remover todas as permissões e atividades do AndroidManifest.xml para todos os projetos de biblioteca para remover o erro, para que o Manifest.java não fosse criado várias vezes. Espero que isso possa ajudar alguém.

Jared Rummler
fonte
4

Depois de tentar todas as outras sugestões sem sorte, excluí todo o conteúdo do diretório 'bin' dos meus projetos, executei o eclipse novamente e funcionou.

JPB
fonte
4

Eu converti um projeto que não é de biblioteca para um projeto de biblioteca, mas ele tinha um arquivo jar criado anteriormente na pasta libs. A remoção deste arquivo jar fez com que esse erro desaparecesse.

PacificSky
fonte
4

Eu estava enfrentando o mesmo problema, então eu vi enquanto empurrava meu aplicativo alguns arquivos jar que foram carregados duas vezes, portanto, vários erros dex. Basta ir às propriedades do projeto -> Java Build Path e tentar desmarcar o jar que está sendo carregado duas vezes.

Navi
fonte
4

[Resolvido para mim]

removendo a biblioteca duplicada "arquivo JAR" e remova o arquivo BuildConfig.java, Limpe o projeto e seu trabalho.

AbuQauod
fonte