No se puede ejecutar dex: varios archivos dex definen

125

Sé que esta pregunta se ha hecho aquí varias veces antes. Pero todavía no he visto ninguna solución posible. Antes de realizar el proyecto 'Ejecutar como aplicación de Android', si no lo limpio, recibo el siguiente error y tengo que reiniciar Eclipse ... y limpiar de nuevo.

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

com.jstun.core ... es parte de mi carpeta src, por supuesto, no puedo eliminarlo. E incluso si elimino ese paquete, otro paquete aparecerá como un error como:

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

He visto este error desde que actualicé a ADT 15, estoy usando Eclipse Galileo en Ubuntu ¿Tienes alguna idea? Gracias por cualquier respuesta!

Tran Ngu Dang
fuente
Intenté casi todo en este hilo pero no funcionó. Resolví el problema eliminando el proyecto y luego creando uno nuevo y copiando y pegando los archivos de origen de la copia de seguridad.
linuxjava
refiérase a este. stackoverflow.com/questions/34415101/…
Steve
Mira mi respuesta en el siguiente enlace. stackoverflow.com/a/38391449/3702595
Sattar Hummatli

Respuestas:

136

Este es un problema de ruta de compilación.

  • Asegúrese de que su carpeta bin no esté incluida en su ruta de compilación.

  • Haga clic derecho en su proyecto -> vaya a propiedades -> Crear ruta.

  • Asegúrese de que la biblioteca Honeycomb esté en su libs/carpeta y no en su carpeta de origen.

  • Incluya las bibliotecas libs/individualmente en la ruta de compilación.

    Por cierto, es posible que desee traer la android-support-v4biblioteca para obtener soporte de Ice Cream Sandwich en lugar de la biblioteca de soporte de Honeycomb.

rizo
fuente
50
Este problema también ocurrió si tiene físicamente varias versiones de bibliotecas incluidas en su ruta de compilación. Eliminando las bibliotecas no utilizadas de la libsruta, limpia y guarda el proyecto, reinicia Eclipse y vuelve a compilarlo.
Aryo
Excluir la carpeta bin de la ruta de compilación lo resolvió para mí. ¡Gracias!
alekop
2
La causa raíz del problema fue que una de las bibliotecas estaba usando la biblioteca nineoldandroid como un contenedor almacenado en el directorio ./libs, mientras que otro proyecto estaba usando nineoldandroid haciendo referencia a ella
Deepika Lalra
Esto también puede suceder cuando tienes algo como Foo.javaen un paquete y Foo.javaen un frasco enlibs/
tricknology
Este error / error ocurre cuando su carpeta de proyecto está en Google Drive. Supongo que es un error cuando Drive se sincroniza. Al menos para mí
ymerdrengene
58

Hoy he encontrado un error similar y la razón fue que la biblioteca de soporte fue referenciada por dos proyectos de biblioteca utilizados por mi proyecto de aplicación pero con diferentes versiones.

Más detalles: mi aplicación depende de 2 proyectos de biblioteca

  • FaceBookSDK 3.0 -> que hace referencia a android-support-v4
  • ActionBarSherlock -> que hace referencia a android-support-v4 pero con una versión modificada para admitir mapas.

Para resolver el problema, tuve que hacer que la biblioteca FaceBookSDK dependiera de la biblioteca ABS en lugar de la biblioteca de soporte directamente.

M.Sameer
fuente
Sí, mi problema fue similar. Dos bibliotecas tenían la biblioteca httpmime, por lo que eliminé una y apunté al otro proyecto.
Matt
10
¿Puede alguno de ustedes explicar exactamente cómo lo hicieron?
Samih A
3
@samih en el ejemplo que mencioné, primero eliminé el jar android-support-v4 de la carpeta lib del proyecto FaceBookSDK y la ruta de compilación. Luego agregué referencia al proyecto de la biblioteca ActionBarSherlock.
M.Sameer
para mí resulta que otro desarrollador agregó una nueva versión de un archivo jar de biblioteca sin eliminar el anterior. Entonces había dos frascos con las mismas clases. Por lo tanto, el error 'Varios archivos dex ...' Podría hacer un grep -r 'OffendingClassName' | grep jar $ para buscar archivos jar que contengan el nombre de la clase.
bibstha
Similar, pero accidentalmente agregué android-support-v4.jarmi ruta de compilación de Eclipse y la agregué manualmente a la libscarpeta que creé. Debido a las referencias duplicadas, no pude compilar (y recibí el mensaje de error que recibió el OP). Eliminé la libscarpeta que creé estúpidamente y todo funcionó. Gracias por la pista.
kurtzbot
47

Bueno, para mí, eliminé el archivo en la carpeta libs llamada android support v4.jar y todo funcionó. Buena suerte :)

akemalFirdaus
fuente
1
Para mí fue un archivo de soporte de Android v4.jar (1) .jar ¡ Lo acabo de eliminar y limpié el proyecto!
ymerdrengene
33

Tuve el mismo error y cada vez que lo solucioné, volvería después de reiniciar Eclipse.

En primer lugar, como dijeron otras personas, asegúrese de no tener múltiples copias del mismo archivo .jar alrededor de sus proyectos.

En mi caso, tenía un proyecto principal que usaba ActionBarSherlock (entre otros proyectos de biblioteca). El truco que funcionó para mí fue entrar ActionBarSherlock --> Properties --> Java Build path --> Order of Exporty cancelar la selección Android Private Libraries. Luego entrando Project -> Cleany ahora debería poder construir el proyecto correctamente.

Ahora, por alguna razón, cada vez que reinicio Eclipse, habilita automáticamente esa casilla de verificación, por lo que tengo que repetir este proceso nuevamente.

Espero que esto ayude a un alma perdida por ahí :)

Henrique
fuente
32

Vaya a Proyecto / propiedades y Java Built Path y desmarque las Bibliotecas privadas de Android

Pravin Bhosale
fuente
1
¡También solucioné mi problema!
Totic
Pero deja de funcionar gcm.jar, ¿cómo hacer que funcione sin este error?
Narendra Singh
Tuve un error: múltiples dex Lcom / google / android / gms / analytics / internal / Command $ 1. Obtuve esto después de actualizar Google Play a 22.1.1. Anular la selección de las bibliotecas privadas dentro del proyecto Google Play eliminó el error
eugene
¡Me salvaste la vida! Thx ~
Leo Hsieh
15

Para mí, solo vaya a Propiedades del proyecto >> Ruta de compilación de Java >> Ordenar y exportar. Desmarque toda la biblioteca externa, como se muestra a continuación. Funciona para mi. Espero que esto ayude.

Propiedades del proyecto

Hoa Hoang
fuente
eso fue un problema para mí
Piyush-Ask Any Difference
8

También me he enfrentado a este problema en mi proyecto. AVD no puede recargar activos, lib, res y contextos de carpetas etc. problema: Dex Loader] No se puede ejecutar dex: se definen varios archivos dex Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl.

Luego, creé nuevos proyectos y copié MainActivity.java, activity_main.xmlcontexto dibujable. Luego, elimine el proyecto anterior de la exploración del paquete, reinicie su Eclipse y AVD. Mi proyecto ahora está funcionando correctamente .... :) ¡Espero que estos pasos les ayuden, amigos!

satya
fuente
8

Tengo el mismo problema, lo que probé es:

  1. Elemento de la lista
  2. Abra la ruta de compilación del proyecto,
  3. Seleccione la pestaña "Bibliotecas",
  4. Eliminar toda la biblioteca excepto la biblioteca de Android
  5. Agregar todos los archivos JAR requeridos,
  6. ¡Y hecho!

A mí me funciona, gracias.

Veneno Fedy
fuente
Sí, acabo de hacer lo mismo. eliminó todos los archivos jar y los volvió a agregar. en orden y exportación, dependencias no verificadas y comprobé todas las bibliotecas agregadas justo ahora
Maulik Sheth
6

Si algunos de ustedes enfrentan este problema con facebook-connent-plugin para phonegap

intente eliminar archivos en el directorio bin / class / com / facebook / android! -> y reconstruir

Samih A
fuente
Esta es la respuesta correcta. La explicación es ---- El facebook.android se incluye dos veces. Una vez en facebookSDK.jar que se incluye en su proyecto y una vez que los archivos java se incluyen directamente en su proyecto. eliminarlo de su proyecto es la manera limpia de hacerlo. todas las demás respuestas son solo soluciones que no exportarán la definición o algo así ...
Sandeep Taneja
6

Como otros mencionaron, esto ocurre cuando tiene varias copias de la misma clase en su ruta de compilación, o en otra parte de su configuración.

Agregué android-support-v4.jar a mi carpeta libs /, y de alguna manera eclipse agregó una segunda copia a bin / classes / android-support-v4.jar.

Puedes probar esto con

grep -r YourOffendingClassName YourApp | grep jar

Eliminar la copia adicional en bin / classes resolvió el problema, sin saber por qué Eclipse hizo una copia allí.

chaqke
fuente
1
Probé todas las otras opciones enumeradas aquí, ¡pero esta fue la que me resolvió! :) Y sí, Eclipse debería morir y Android Studio debería tener su versión 1.0, el mundo sería un lugar mejor.
Johan Paul
5

Recibí este error por otra razón. Estaba confundiendo agregar tanto la biblioteca de soporte v4 como la v13. Esto no fue necesario para mí ya que mi minSdkVersion es 15.

Lo arreglé al incluir solo la biblioteca de soporte v13. Además, asegúrese de marcar la biblioteca en la ruta de compilación de la biblioteca exportada en eclipse. También lo moví a la cima.

Ryan R
fuente
Esto fue lo que me atrapó también. La biblioteca de soporte v13 incluye la biblioteca de soporte v4, por lo que dex mostraba las múltiples declaraciones de clase.
Kyle Falconer
4

Incluso después de pasar por varias respuestas, ninguna solución funcionó para mí.

Eliminé "Dependencias de Android" de la ruta de compilación. Se agregaron todos los archivos jar nuevamente a la ruta de compilación y el error desapareció. De alguna manera, el eclipse parecía guardar las cosas en caché.

JaydeepW
fuente
3

Dejo esta respuesta para alguien que se mete en este escenario como lo hice yo.

Tropecé aquí y allá antes de darme cuenta de que arrastré y solté por error el archivo JAR de la biblioteca de soporte en mi carpeta src y estaba allí. Como no tenía idea de cómo sucedió o cuándo lo dejé allí, nunca imaginé que algo estaba mal allí.

Estaba recibiendo el mismo error, encontré el problema después de algún tiempo y lo eliminé. El proyecto ahora funciona bien.

kishu27
fuente
3

La solución para mí fue hacer lo siguiente:

  1. -> directorio lib en su proyecto y elimine cualquier elemento múltiple.
  2. ¡Proyecto-> Propiedades-> Ruta de compilación de Java y eliminar cualquier Biblioteca de dependencia se agregó automáticamente y no por usted! -> Aplicar
  3. Reiniciar Eclipse IDE
  4. Ahora limpia el proyecto.
  5. Ejecutar / depurar en el dispositivo / emulador del proyecto ... Buena suerte
GuyN
fuente
el problema persiste
Akhil Jain
2

Mi problema al principio fue:

No se puede ejecutar dex: java.nio.BufferOverflowException. Compruebe el registro de Eclipse para el seguimiento de la pila.

1) Haga clic derecho en mi proyecto -> Herramientas de Android -> Agregar biblioteca de soporte (Ejecutar mi aplicación ... No funcionó, así que sigo funcionando ...) 2) Haga clic derecho en mi proyecto nuevamente -> Propiedades -> Android -> Verifique Android 4.1.2 (16) en Project Build Target (Ejecute la aplicación nuevamente ... y obtenga esto:

No se puede ejecutar dex: varios archivos dex definen Landroid / support / v4 / app / BackStackState;

3) Así que fui a la carpeta "lib" en mi proyecto y eliminar el "viejo" Android.support.library.jar (Ejecutar la aplicación y cruzar los dedos y ...)

¡FUNCIONA!

Espero que ayude a alguien ... ¡Gracias gente!

daros
fuente
2

He tenido este problema y eso no significa que la misma biblioteca se carga muchas veces, pero el sistema está tratando de cargar una clase con el mismo nombre y posiblemente el mismo nombre de paquete simultáneamente, es decir

  • com.pack1.dey Class Geometrydelibrary1.jar

y otro

  • com.pack1.dey Class Geometrydelibrary2.jar.

¿Cómo deberías acercarte? Debe analizar qué métodos se están utilizando, un método de library1.jar o library2.

Hay 2 soluciones,

  1. Cambie el nombre de un nombre de paquete y luego dalvik interpreta que son clases distintas
  2. O si desea arriesgarse, purgue la clase, que no contiene el método, que realmente utilizamos.

Espero que esto haya aclarado esta pregunta frecuente.

Final profundo
fuente
2

Eliminé las dependencias de Android de la ruta de compilación y funcionó.

Cüneyt
fuente
1

Este error me ocurrió cuando en el proyecto de mi aplicación hice referencia a un proyecto de Biblioteca en mi espacio de trabajo de Eclipse (en mi caso, el SDK de Facebook) y al mismo tiempo incluí el SDK de Facebook como un jar en la carpeta libs. Al eliminar la referencia de la biblioteca, pero al mantener el jar en la carpeta libs se eliminó el error.

Gunnar Karlsson
fuente
1

Tuve el mismo problema Tuve que eliminar el .apkarchivo y luego funcionó.

sefodu
fuente
1

Para mí, eliminé android-support-v4.jar de la carpeta lib y también lo eliminé de la ruta de compilación.

Rach
fuente
Hola Rach, bienvenido a Stackoverflow. Su respuesta se marcó como de baja calidad debido a su longitud y contenido. Al responder preguntas, proporcione una descripción adicional sobre cómo resolver el problema. Ayudará a otros y te ganará reputación :)
superhéroe
1
  • Haga clic derecho en proyecto y vaya a build Path>configuration build path
  • Seleccione la pestaña de la biblioteca y haga clic en support-v4 libraryy haga clic en eliminar
  • Haga clic en Aceptar

y luego limpiar su proyecto y ejecutarlo funcionará :-)

Iman Marashi
fuente
0

En caso de que alguien más se golpee la cabeza con este tema como acabo de hacer:

Mi caso involucró una cadena de proyectos de biblioteca. Simplemente hacer un proyecto limpio en todas las bibliotecas solucionó todo

Joe Plante
fuente
0

Encontré la solución a continuación en eclipse ... espero que funcione para usted :)

Right click on the Project Name

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

Unchecked your .jar library's
Harshal Benake
fuente
0

Este problema se produce cuando una misma biblioteca se agrega a su proyecto varias veces. Si no ha agregado la biblioteca varias veces intencionalmente, consulte las dependencias / bibliotecas privadas de las bibliotecas que ha agregado en su proyecto, lo más probable es que ya hayan incluido una biblioteca que está causando este conflicto.

Umer Farooq
fuente
0

También estaba luchando por encontrar que este es un problema. En mi caso, lo que sucedió fue al copiar el apk al correo electrónico (arrastrar y soltar): por error, el apk se pegó en la carpeta src en uno de los paquetes. Después de eliminar el apk de la carpeta de origen, funcionó bien.

Prabakaran
fuente
0

Tuve este problema en Intellij y fue porque la biblioteca ActionBarSherlock que agregué a mi proyecto definió android-support-v4.jar como una dependencia de compilación y este jar ya estaba incluido en mi proyecto, por lo que había varias copias / versiones de DEX en tiempo de compilación.

La solución fue cambiar la dependencia del módulo ActionBarSherlock para que este jar sea Runtime en lugar de compilar, ya que mi proyecto ya lo estaba proporcionando.

TimT
fuente
0

Para mí, el problema era que había agregado un proyecto lib (autobahn lib) antes y luego cambié al archivo Jar de la misma biblioteca. Aunque había eliminado las referencias al proyecto de biblioteca anterior, recibía este error. Siguiendo todas las respuestas aquí, verifiqué la ruta de compilación, etc. Pero no he agregado estas bibliotecas a la ruta de compilación manualmente. Entonces no tenía nada que eliminar. Finalmente encontré esta carpeta.

bin / dexedLibs

Me di cuenta de que había dos archivos jar con el mismo nombre correspondiente a la autopista Android que estaba causando el conflicto. Así que eliminé todos los archivos jar en la carpeta dexedLibs y reconstruí el proyecto. Eso resolvió el problema.

Ajith Memana
fuente
0

Para agregar la miríada de otras fuentes potenciales ... Había actualizado todas las bibliotecas en la libcarpeta de mi proyecto pero luego Eclipse reinstaló "útilmente" todas las bibliotecas originales. Ya no había ninguna referencia dentro de Eclipse a estas bibliotecas, pero el programa externo de dex-maker simplemente agarró todos los archivos en el libdirectorio y, por lo tanto, obtuvo dos versiones de varios .jararchivos de biblioteca .

git statusidentifiqué los nuevos archivos y los git clean -feliminé por mí (aunque a veces tuve que esperar o reiniciar Eclipse en Windows porque todavía tenía los archivos abiertos de la copia).

Brian White
fuente
0

ULTRA solución simple y mejor:

Elimine todo en la carpeta del proyecto principal del botón derecho -> Propiedades -> Ruta de compilación de Java excepto Android XY (donde XY es la versión en Android). Limpiar y construir. ¡Hecho!

Antes de eso, asegúrese de tener un solo android-support-v4.jar.

Andrés Fg
fuente
0

Si está utilizando cordova, pruebe el comando cordova clean

Merbin Joe
fuente