Não foi possível executar o dex: vários arquivos dex definem


125

Eu sei que esta pergunta foi feita aqui algumas vezes antes. Mas ainda não vi nenhuma solução possível. Antes de criar o projeto 'Executar como Aplicativo Android', se não o limpar, recebo o seguinte erro e tenho que reiniciar o Eclipse ... e limpar novamente.

Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define
     Lcom/jstun/core/attribute/MessageAttributeInterface;

com.jstun.core ... faz parte da minha pasta src, é claro que não consigo removê-la. E mesmo se eu remover esse pacote, outro pacote aparecerá como um erro como:

Unable to execute dex: Multiple dex files define
     Landroid/support/v4/app/ActivityCompatHoneycomb;

Vi esse erro desde a atualização para o ADT 15, estou usando o Eclipse Galileo no Ubuntu Você tem alguma ideia? Obrigado por qualquer resposta!


Eu tentei quase tudo neste segmento, mas não funcionou. Resolvi o problema excluindo o projeto, criando um novo e copiando e colando os arquivos de origem do backup.
Linuxjava 07/07/2015


Veja minha resposta no seguinte link. stackoverflow.com/a/38391449/3702595
Sattar Hummatli

Respostas:


136

Este é um problema do caminho de construção.

  • Verifique se a pasta bin não está incluída no caminho de construção.

  • Clique com o botão direito do mouse em seu projeto -> vá para Propriedades -> Caminho da Construção.

  • Verifique se a biblioteca Honeycomb está na sua libs/pasta e não na sua pasta de origem.

  • Inclua as bibliotecas libs/individualmente no caminho de construção.

    BTW, convém trazer a android-support-v4biblioteca para obter suporte ao Ice Cream Sandwich em vez da biblioteca de suporte do Honeycomb.


50
Esse problema também ocorreu se você tiver várias versões de bibliotecas incluídas fisicamente no seu caminho de construção. Removendo as bibliotecas não utilizadas do libscaminho, limpe e salve o projeto, reinicie o Eclipse e recompile-o novamente, trabalhando para mim.
Aryo 23/07

A exclusão da pasta bin do caminho da compilação resolveu isso para mim. Obrigado!
alekop

2
A causa raiz do problema foi que um dos a biblioteca estava usando biblioteca nineoldandroid como um frasco armazenado no ./libs dir, enquanto outro projecto estava usando nineoldandroid referenciando-lo
Deepika Lalra

Isso também pode acontecer quando você tem algo parecido Foo.javaem um pacote e Foo.javaem um frasco emlibs/
tricknology

Este erro / bug ocorre sempre que a pasta do seu projeto está no Google Drive. Acho que é um erro quando o Drive é sincronizado. Pelo menos para mim
ymerdrengene

58

Encontrei um erro semelhante hoje e o motivo foi que a biblioteca de suporte foi referenciada por dois projetos de biblioteca usados ​​pelo meu projeto de aplicativo, mas com versões diferentes.

Em mais detalhes: Meu aplicativo depende de dois projetos de biblioteca

  • FaceBookSDK 3.0 -> que está referenciando android-support-v4
  • ActionBarSherlock -> que faz referência ao android-support-v4, mas com uma versão modificada para suportar mapas.

Para resolver o problema, tive que fazer a biblioteca do FaceBookSDK depender da biblioteca do ABS, em vez da biblioteca de suporte diretamente.


Sim, meu problema foi semelhante. Duas bibliotecas tinham a biblioteca httpmime, então eu removi uma e fiz apontar para o outro projeto.
Matt

10
Algum de vocês pode explicar exatamente como você fez isso?
Samih A

3
@samih no exemplo que mencionei, primeiro removi o jar android-support-v4 da pasta lib do projeto FaceBookSDK e criei o caminho. Em seguida, adicionei referência ao projeto da biblioteca ActionBarSherlock.
M.Sameer

para mim, outro desenvolvedor adicionou uma nova versão de um arquivo jar da biblioteca sem excluir o antigo. Então havia dois jarros com as mesmas classes. Assim, o erro 'Múltiplos arquivos dex ...' Você pode executar um grep -r 'OffendingClassName' | grep jar $ para procurar arquivos jar que contenham o nome da classe.
precisa saber é

Semelhante, mas acidentalmente adicionei o android-support-v4.jarcaminho de construção do meu Eclipse e o adicionei manualmente à libspasta que criei. Por causa das referências duplicadas, não consegui compilar (e recebi a mensagem de erro que o OP recebeu). Eu apaguei a libspasta que estupidamente criei e tudo funcionou. Obrigado pela dica.
precisa saber é o seguinte

47

Bem, para mim, apaguei o arquivo na pasta libs chamado android support v4.jar e tudo deu certo. Boa sorte :)


1
Para mim, era o arquivo android support v4.jar (1) .jar Acabei de removê-lo e limpei o projeto!
Ymerdrengene

33

Eu tinha o mesmo erro acontecendo e toda vez que eu o corrigia, ele voltava depois de reiniciar o Eclipse.

Primeiro, como outras pessoas disseram, verifique se você não possui várias cópias do mesmo arquivo .jar em seus projetos.

No meu caso, eu tinha um projeto principal que usava o ActionBarSherlock (entre outros projetos de biblioteca). O truque que funcionou para mim foi entrar ActionBarSherlock --> Properties --> Java Build path --> Order of Exporte desmarcar Android Private Libraries. Então, entrando Project -> Cleane agora você deve conseguir criar o projeto corretamente.

Agora, por algum motivo, toda vez que eu reinicio o Eclipse, ele ativa automaticamente essa caixa de seleção, então tenho que repetir esse processo novamente.

Espero que isso ajude alguma alma perdida por aí :)


32

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


1
Corrigido meu problema também!
Totic

Mas está parando o gcm.jar para funcionar, como fazê-lo funcionar sem esse erro?
Narendra Singh

Eu tive erro: vários dex Lcom / google / android / gms / analytics / internal / Command $ 1. Eu consegui isso depois de atualizar o google play para 22.1.1. Anular Selecção de bibliotecas particulares dentro do Google projeto de jogo removido o erro
Eugene

Você salvou minha vida! Thx ~
Leo Hsieh

15

Para mim, basta acessar Propriedades do Projeto >> Caminho de Construção Java >> Solicitar e Exportar. Desmarque toda a biblioteca externa, conforme a imagem abaixo. Isso funciona para mim. Espero que esta ajuda.

Propriedades do Projeto


isso foi problema para mim
Piyush-Ask Any Difference

8

Eu também enfrentei esse problema no meu projeto. O AVD não pode recarregar contextos de ativos, lib, res e etc. problema: Dex Loader] Não foi possível executar o dex: vários arquivos dex são definidos Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl.

Então, eu criei novos projetos e copiado MainActivity.java, activity_main.xml, contexto drawable. Em seguida, exclua o projeto antigo do pacote explore, reinicie o Eclipse e o AVD. Meu projeto agora está funcionando corretamente .... :) Espero que essas etapas ajudem você um pouco pessoal .. !!


8

Eu tenho o mesmo problema, o que eu tentei é:

  1. Item da lista
  2. Caminho de criação do projeto aberto,
  3. Selecione a guia "Bibliotecas",
  4. Remova toda a biblioteca, exceto a Biblioteca Android
  5. Incluindo todos os arquivos JARs necessários,
  6. E feito!

Funciona para mim, obrigado.


Sim, eu fiz o mesmo. removeu todos os arquivos jar, adicionados novamente. em ordem e exportação, as dependências não verificadas e verificadas todas as bibliotecas adicionado apenas agora
Maulik Sheth

6

Se alguns de vocês enfrentam esse problema com o facebook-connent-plugin for phonegap

tente remover arquivos no diretório bin / class / com / facebook / android! -> e reconstruir


Esta é a resposta certa. A explicação é ---- O facebook.android é incluído duas vezes. Uma vez no facebookSDK.jar, que está incluído no seu projeto, e uma vez que os arquivos java são incluídos diretamente no seu projeto. removê-lo do seu projeto é a maneira mais limpa de fazê-lo. todas as outras respostas são apenas arounds de trabalho que não irá exportar a definição ou algo ....
Sandeep Taneja

6

Como outros mencionados, isso ocorre quando você tem várias cópias da mesma classe no caminho da compilação ou em outro local da instalação.

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.

Você pode testar isso com

grep -r YourOffendingClassName YourApp | frasco grep

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


1
Eu tentei todas as outras opções listadas aqui, mas essa foi a que resolveu para mim! :) E sim, o Eclipse deve morrer e o Android Studio deve ter sua versão 1.0 - o mundo seria um lugar melhor.
Johan Paul

5

Eu recebi esse erro por outro motivo. Eu estava errado ao adicionar as bibliotecas de suporte v4 e v13. Isso não era necessário para mim, pois minha minSdkVersion é 15.

I fixa-lo unicamente incluindo a biblioteca de suporte v13. Além disso, certifique-se de marcar a biblioteca no caminho de construção da biblioteca exportada no eclipse. Eu também mudei para o topo.


Foi isso que me pegou também. A biblioteca de suporte da v13 inclui a biblioteca de suporte da v4, portanto o dex estava mostrando as várias declarações de classe.
Kyle Falconer

4

Mesmo depois de passar por várias respostas, nenhuma solução funcionou para mim.

Excluí "Dependências do Android" do caminho da compilação. Adicionados todos os arquivos jar novamente ao caminho da compilação e o erro desapareceu. De alguma forma, o eclipse parecia esconder as coisas.


3

Estou deixando essa resposta para alguém que entra nesse cenário como eu.

Eu tropecei aqui e ali antes de perceber que arrastei e soltei por engano o arquivo JAR da Biblioteca de Suporte na minha pasta src e ela estava lá. Como eu não tinha ideia de como isso aconteceu ou quando o larguei lá, nunca poderia imaginar que algo estivesse errado lá.

Eu estava recebendo o mesmo erro, encontrei o problema após algum tempo e o removi. O projeto agora está funcionando bem.


3

A solução para mim foi apenas fazer o seguinte:

  1. -> diretório lib em seu projeto e exclua vários elementos.
  2. Projeto-> Propriedades-> Java build Path e excluir qualquer Biblioteca de Dependências foi adicionado automaticamente e não por você! -> Aplicar
  3. Reinicie o Eclipse IDE
  4. Agora limpe o projeto.
  5. Executar / Depurar no dispositivo / emulador do projeto ... Boa sorte

o problema ainda persistir
Akhil Jain

2

Meu problema a princípio foi:

Não foi possível executar o dex: java.nio.BufferOverflowException. Verifique o log do Eclipse para rastreamento de pilha.

1) Clique com o botão direito do mouse no meu projeto -> Ferramentas Android -> Adicionar Biblioteca de Suporte (Execute meu aplicativo ... Não funcionou, então eu continuo ...) 2) Clique com o botão direito do mouse no meu projeto novamente -> Propriedades -> Android -> Marque o Android 4.1.2 (16) no Project Build Target (Execute o aplicativo novamente ... e obtenha:

Não foi possível executar o dex: vários arquivos dex definem Landroid / support / v4 / app / BackStackState;

3) Então eu fui para a pasta "lib" no meu projeto e excluí o "antigo" Android.support.library.jar (execute o aplicativo e cruze os dedos e ...)

FUNCIONA!

Espero que ajude alguém ... Obrigado pessoal!


2

Eu tive esse problema e isso não significa que a mesma biblioteca seja carregada várias vezes, mas o System está tentando carregar uma classe com o mesmo nome e possivelmente o mesmo nome de pacote simultaneamente, ou seja,

  • com.pack1.dee Class Geometrydelibrary1.jar

e outro

  • com.pack1.dee Class Geometrydelibrary2.jar.

Como você deve abordar? Você deve analisar quais métodos estão sendo usados, um método library1.jar ou library2.

Existem 2 soluções,

  1. Renomeie um nome de pacote e depois o dalvik interpreta, que são classes distintas
  2. Ou, se você quiser arriscar, limpe a classe, que não contém o método, que realmente usamos.

Espero que tenha esclarecido essa pergunta freqüente.


2

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


1

Esse erro aconteceu comigo quando, no projeto do meu aplicativo, referenciei um projeto Library no meu espaço de trabalho do Eclipse (no meu caso, o SDK do Facebook) e, ao mesmo tempo, incluímos o SDK do Facebook como um jar na pasta libs. A remoção da referência da biblioteca, mas mantendo o jar na pasta libs, removeu o erro.


1

Eu tive o mesmo problema. Eu tive que excluir o .apkarquivo e funcionou.


1

Para mim, excluí o android-support-v4.jar da pasta lib e também o removi do caminho de compilação.


Olá Rach, bem-vindo ao Stackoverflow. Sua resposta foi sinalizada como de baixa qualidade por causa de seu tamanho e conteúdo. Ao responder perguntas, forneça uma descrição adicional sobre como resolver o problema. Ele irá ajudar os outros e ganhar reputação :)
super-herói

1
  • Clique com o botão direito do mouse no projeto e vá para build Path>configuration build path
  • Selecione a guia da biblioteca e clique em support-v4 librarye clique em remover
  • Clique em OK

e depois limpe o seu projeto e execute-o :-)


0

Caso alguém mais acerte esse assunto, como eu acabei de fazer:

Meu caso envolveu uma cadeia de projetos de bibliotecas. Simplesmente fazer um projeto limpo em todas as bibliotecas corrigiu tudo


0

Encontrei abaixo a solução no eclipse ... espero que funcione para você :)

Right click on the Project Name

Select Java Build Path, go to the tab Order and Export

Unchecked your .jar library's

0

Esse problema ocorre quando uma mesma biblioteca é adicionada ao seu projeto várias vezes. Se você não adicionou a biblioteca várias vezes intencionalmente, verifique as bibliotecas de dependências / privadas das bibliotecas que você adicionou em seu projeto, provavelmente elas já incluíram uma biblioteca que está causando esse conflito.


0

Eu também estava lutando para descobrir que esse é um problema. No meu caso, o que aconteceu foi ao copiar o apk para o e-mail (arrastar e soltar) - por engano, o apk foi colado na pasta src em um dos pacotes. Depois de remover o apk da pasta de origem, funcionou bem.


0

Eu tive esse problema no Intellij e foi porque a biblioteca ActionBarSherlock que adicionei ao meu projeto definiu o android-support-v4.jar como uma dependência de compilação e esse jar já estava incluído no meu projeto, portanto, havia várias cópias / versão do DEX em tempo de compilação.

A solução foi alterar a dependência do módulo ActionBarSherlock para que este jar seja Runtime em vez de compilar, pois meu projeto já estava fornecendo.


0

Para mim, o problema era que, eu adicionei um projeto lib (autobahn lib) anteriormente e depois mudei para o arquivo Jar da mesma biblioteca. Embora eu tenha removido referências ao projeto de biblioteca mais antigo, estava recebendo esse erro. Seguindo todas as respostas aqui, verifiquei o caminho da construção, etc. Mas não adicionei essas bibliotecas para criar o caminho manualmente. Então eu não tinha nada para remover. Finalmente encontrei esta pasta.

bin / dexedLibs

Percebi que havia dois arquivos jar com o mesmo nome correspondentes ao Android autobahn que estavam causando o conflito. Então, eu apaguei todos os arquivos jar na pasta dexedLibs e recriei o projeto. Isso resolveu o problema.


0

Para adicionar uma infinidade de outras fontes em potencial ... Atualizei todas as bibliotecas da libpasta do meu projeto, mas o Eclipse "ajudou" a reinstalar "útil" todas as bibliotecas originais. Não havia mais nenhuma referência dentro do Eclipse para essas bibliotecas, mas o programa dex-maker externo apenas pegou todos os arquivos no libdiretório e, assim, obteve duas versões de vários .jararquivos de biblioteca .

git statusidentifiquei os novos arquivos e os git clean -flivrei para mim (embora às vezes eu tenha que esperar ou reiniciar o Eclipse no Windows porque ainda tinha os arquivos abertos a partir da cópia).


0

ULTRA solução simples e melhor:

Remova tudo na pasta do projeto principal, clique com o botão direito -> Propriedades -> Caminho de compilação Java, exceto o Android XY (onde XY é a versão no android). Limpe e Construa. Feito!

Antes disso, certifique-se de ter um único android-support-v4.jar.


0

Se você estiver usando cordova, tente o comando cordova clean

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.