No se puede ejecutar dex: varios archivos dex definen Lcom / myapp / R $ array;

391

Desde la actualización a ADT14 ya no puedo construir mi proyecto. Se estaba construyendo bien antes de la actualización.

El error:

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

Se han informado problemas similares y he probado las sugerencias allí, incluyendo

  • Reinicio Eclipse .
  • Limpieza del proyecto y reconstrucción: deshabilite la opción "Proyecto-> Construir automáticamente", luego "Limpiar" y "Construir" proyecto, luego intente ejecutar. restablecer la opción "Construir automáticamente" a Activado
  • Reinstalar el Android herramientas de desarrollador
  • Reinstalar Eclipse (actualizado a la última versión 3.7.1)
  • Creó un nuevo proyecto importando desde el sistema de archivos
  • Creó un nuevo proyecto a partir de la subversión.
felpa
fuente
estabas trabajando en Windows o Mac ... porque me gustaría seguir las siguientes respuestas pero no estoy seguro de si van a funcionar en Mac ... gracias
McLan
si ha importado un proyecto de biblioteca y también ha importado JAR de biblioteca en la carpeta lib, entonces debe eliminar el archivo jar de su carpeta lib y también de [Build Path -> Configure Build Path]. Y será trabajado.
Mehul
Mira mi respuesta en el siguiente enlace. stackoverflow.com/a/38391449/3702595
Sattar Hummatli

Respuestas:

462

Tuve el mismo problema, bastante extraño porque solo sucedía cuando usaba Eclipse (pero estaba bien con Ant). Así es como lo arreglé:

  • Haga clic derecho en el Project Name
  • Seleccione Build Path->Configure Build Path
  • En Java Build Path, ve a la pestañaOrder and Export

  • Desmarca tu .jarbiblioteca

Solo a veces: en la pestaña Orden y exportación, no tenía ninguna biblioteca jar allí, por lo que he desmarcado el elemento de Bibliotecas privadas de Android. Ahora mi proyecto se está ejecutando.

Marco Bonifazi
fuente
En mi proyecto, estaba incluyendo la biblioteca de soporte del directorio sdk en mi ruta de compilación, y tenía la biblioteca de soporte en la carpeta "libs" para el soporte de la construcción de hormigas. Desmarqué uno y solucionó mi problema.
Chris Feist
20
En algún momento entre la última vez que se creó y se lanzó, una nueva biblioteca apareció misteriosamente en mi proyecto: "Bibliotecas privadas de Android" que contenía la biblioteca de soporte a la que ya me refería. Entonces apareció este misterioso "múltiples archivos dex definen ____". Verificar el Java Build Path y ver este nuevo elemento, y desmarcar la biblioteca de soporte incluida originalmente resolvió el problema para mí.
Tom Pace
99
Muchas gracias. Esta es la solución correcta. Realmente no sé por qué eclipse tiene tantos errores. Ahora la situación es como solo 2 horas que puedo codificar y 6 horas tengo que encontrar una solución a este tipo de problemas innecesarios.
Roy mathew
44
En la pestaña Orden y Exportar no tenía ninguna biblioteca jar allí, así que he desmarcado el Android Private Librarieselemento. Ahora mi proyecto se está ejecutando.
Junior Mayhé
1
En mi caso, tenía un duplicado de "android-support-v4.jar". Cuando i eliminado él, el error se fue
ymerdrengene
94

Mi problema se resolvió después de limpiar algunos directorios y archivos de las versiones anteriores de las herramientas. ADT Rev 14 cambia donde se almacenan los archivos binarios . Eliminé todo el directorio bin, reinicié Eclipse y limpié la compilación y forcé una reconstrucción. Al principio eso pareció funcionar, pero el problema volvió después de la próxima carrera.

Finalmente descubrí que mi directorio bin estaba incluido en la ruta de compilación del proyecto. Excluí bin de la ruta de compilación y repetí los pasos anteriores. Esto resolvió mi problema.

terry
fuente
42
Qué diablos Google. Este problema sigue volviendo incluso con R15.
Terry
2
Edité la solución anterior para incluir la resolución final. Resuelto de forma permanente ahora.
Terry
77
En resumen, nadie sabe realmente por qué ocurre el problema, qué significa y cómo solucionarlo (no tengo ningún directorio bin en Java Build Path). Evité actualizar a R15 por estas razones, permaneciendo con R9. Pero todavía tengo un problema similar , sin pistas a la vista. Cualquier sugerencia o ayuda sería muy apreciada.
Bill The Ape
66
@BillTheApe - de acuerdo. Esto es más que frustrante, es costoso.
Tom Redman el
@TRedman Finalmente logré resolver el problema . Sin entender por qué. No te rías LOL +1.
Bill The Ape
50

[Resuelto para mí]

Propiedades del proyecto Eclipse-> Ruta de compilación Java-> Ordenar y exportar

Desmarca las bibliotecas privadas de Android.

usuario802467
fuente
44
No ayudó en mi caso
redux
1
MUCHAS GRACIAS
46

Ninguno de los anteriores ayudó. Fue un problema simple al final.

Tenía un proyecto que usa FacebookSDK y ViewPagerIndicator como proyectos de biblioteca. Todos fueron construidos en Android API 16 y esos dos proyectos usaron la biblioteca de soporte de Android vX (¡X no es 16!)

Agregué un JAR externo a ambos proyectos y lo apunté a \ extras \ android \ v4 ... Y también eliminé el jar v4 que tenía en sus carpetas de libs.

Limpia todos los proyectos y reconstruye.

Voilla!

El error exacto que recibí: No se puede ejecutar dex: varios archivos dex definen Landroid / support / v4 / view / PagerAdapter; La conversión al formato Dalvik falló: no se puede ejecutar dex: varios archivos dex definen Landroid / support / v4 / view / PagerAdapter;

Roy Weinberg
fuente
36

Este problema me estaba sucediendo, tenía un archivo .jar externo en mi carpeta libs llamado gson-2.2.2.jar pero por alguna razón había dos de ellos, gson-2.2.2.jar y gson-2.2.2.jar ( 1), simplemente eliminé este último y mi proyecto volvió a funcionar bien.

Tom Selleck
fuente
2
Tuve un problema similar cuando había un viejo archivo jar en la carpeta libs y lo vinculaba a un jar más nuevo en el mismo espacio de trabajo. Cuando ADT encuentra múltiples definiciones para el mismo símbolo, pone un error como este. Eliminar el viejo archivo jar en la carpeta libs lo arregló para mí.
phyatt
La jarra externa es una de las causas del problema y también lo fue en mi caso. Acabo de tener un frasco sobrante en mi /libsde un experimento anterior, lo que resultó en un Proyecto de biblioteca y el .jar que se generó a partir de él. Eliminar ese jar debajo /libsresuelve el problema. +1
ripopenid
31
  1. Cerrar eclipse.
  2. Elimine la carpeta bin dentro de su carpeta de proyecto.
  3. Comience eclipse y limpie su proyecto.
  4. Ahora corre y el problema debería desaparecer
Mohit marwal
fuente
La respuesta de Mateus Viccari resolvió mi problema, eliminé las bibliotecas duplicadas y funciona a las
mil maravillas
Funcionó para mí Si manifest fileeclipse lo elimina del bindirectorio, agréguelo manualmente y vuelva a limpiar el proyecto.
Mehul Joisar
Funciona para mi. También asegúrese de no tener el mismo .jar en dos lugares diferentes (en mi caso, lo tuve tanto en un proyecto de biblioteca como en un proyecto que hace referencia a ese proyecto de biblioteca. Parece que Eclipse lo agregó automáticamente por alguna razón)
Magnus W
Para mí, acabo de limpiar TODO el espacio de trabajo. Simplemente limpiar el proyecto no fue suficiente. Creo que mi problema tenía que ver con cambiar uno de los proyectos a "Biblioteca" en medio de una operación limpia
tricknology
No ayudó en mi caso
redux
26

Como otros han mencionado, esto ocurre cuando tiene varias copias de la misma clase en su ruta de compilación, incluida bin / en su ruta de clase es una forma de garantizar este problema.

Para mí, esto ocurrió cuando 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.

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

Puedes probar esto con

grep -r YourOffendingClassName YourApp | grep jar

chaqke
fuente
23

Para mí, solo hago clic derecho en proyecto -> Ruta de compilación -> configurar ruta de compilación -> Bibliotecas -> eliminar dependencia

después de que funcione

sonida
fuente
20

Este error puede ocurrir si tiene dos tarros que contienen los mismos nombres de clase, por ejemplo, tenía dos bibliotecas: jsr311-api-1.1.1.jar y jersey-core-1.17.1.jar, ambas contenían la clase javax.ws .rs.ApplicationPath. Eliminé jsr311-api-1.1.1.jar y funcionó bien.

Mateus Viccari
fuente
1
Esta es la solución perfecta para mí. Agregué las mismas librerías dos veces. Gracias.
swiftBoy
19

Recibí este error después de agregar facebooksdk.jar a un proyecto que ya tenía dependencias en android-support-v4.jar . Desde el facebooksdk.jar ya incluye su propio android-support-v4.jar, hubo conflictos. Eliminar el anterior android-support-v4.jar de los proyectos Propiedades / Ruta de compilación de Java / Bibliotecas resolvió el problema por mí.

usuario1293131
fuente
18

Vaya a Proyecto / propiedades y Java Build Path y sin marcar los Android bibliotecas privadas .

Este es también otro caso para este tipo de error.

Hecho

Hiren Patel
fuente
15

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

Editar: ignorar eso. Tenía el mismo jar en mis dependencias maven y en la carpeta libs. Eliminé el de la carpeta lib.

revs Osha Mahue
fuente
2
Eliminar las dependencias de Android de la ruta de compilación interrumpió mi proyecto. Afortunadamente, fue fácil de restaurar haciendo clic con el botón derecho en proyecto> Herramientas de Android> Reparar propiedades del proyecto.
azdev
En algunos casos, eliminar las dependencias de Android y regenerarlo resuelve algunos problemas. Pero como en mi edición, ese no es el caso.
Hadi Tok
9

Probablemente haya instalado r14 , este error puede deberse a la actualización de las herramientas de la plataforma, debe reinstalar su SDK

Reno
fuente
Acabo de volar por completo mi SDK, lo instalé nuevo desde el archivo zip descargado y luego cargué las API de Android con el Administrador de SDK de Android. Tenía muchas esperanzas pero el problema persiste.
Terry
Hay una carpeta oculta .android en Windows, también deberías eliminarla.
Reno
el mismo problema existe
McLan
9

Para mí, este problema solo existe mientras haya proyectos de biblioteca de Android involucrados en mi proyecto. Entonces, cuando elimino todas las bibliotecas y hago lo que dijiste, puedo volver a ejecutar mi aplicación. Si hay bibliotecas involucradas, incluso el truco bin-remove-trick truco no funcionará.

No entiendo por qué este error apareció por primera vez hoy, ya que estoy usando ADT 14 durante varios días. Bueno, hubo otros errores que me mantuvieron feliz sin embargo.

mephju
fuente
Muchas de las soluciones parecen algunas cosas de vudú ... :)
Jasper
8

Eliminar la carpeta bin no fue suficiente, también eliminé la carpeta gen. Luego, después de dos reconstrucciones, el mensaje de error dex desapareció.

Rudolf Polzer
fuente
8

Seleccione el proyecto en Project Explorer , haga clic con el botón derecho y seleccione Propiedades -> Ruta de compilación de Java -> Fuente -> Marque la casilla Permitir carpetas de salida para carpetas de origen

prasantasing
fuente
No ayudó a mi caso.
redux
8

Básicamente estaba enfrentando el mismo problema. Eliminé la carpeta BIN, luego eliminé los archivos jar no utilizados para Ordenar e Importar de eclipse. Funcionó después de eso

Ahsan Zaheer
fuente
7

Llego tarde a esta fiesta, pero agrego mi propia experiencia para poder encontrarla nuevamente más tarde :)

Me encontré con este problema después de actualizar los complementos de Android SDK y Eclipse. ¡Ninguna actualización queda impune!

El problema para mí estaba relacionado con proyectos de biblioteca, mi aplicación hace referencia tanto a proyectos estándar de Java como a proyectos de biblioteca de Android. Me di cuenta de que la configuración de Java Build Path incluía las carpetas src y res de los proyectos de la biblioteca de Android en la lista Fuente (los votos positivos para todos los que mencionan que bin en la fuente es un problema, src y res también fueron un problema).

Entonces la solución fue:

  1. Elimine todas las referencias de fuentes y proyectos de bibliotecas de Android a las que se hace referencia en la sección Ruta de compilación de Java de la configuración tanto en la lista Fuente como en la lista Proyecto
  2. Asegúrese de que las dependencias puras de Java se enumeren en la lista de proyectos y que estén marcadas en la pestaña Ordenar y exportar para que las clases se incluyan en el apk
  3. Asegúrese de que todas las dependencias de la biblioteca de Android estén listadas en la sección de Android de las propiedades del proyecto, en la sección de la biblioteca debajo de las versiones comprobadas del SDK.

¡Estaba en camino de juntar todo eso de las otras soluciones! ¡Uf!

Arrendajo
fuente
Bien dicho! Llegué a conclusiones idénticas después de mucho trabajo. Solo quería agregar que si alguno de sus proyectos de biblioteca incluye otros proyectos de biblioteca o dependencias de Java puro, todos deben agregarse de la misma manera, de lo contrario, se producirá este error. Si sigue las reglas anteriores para todos sus proyectos, no debería tener ningún problema.
strangeluck
1
Una cosa más ... parece que si no necesita exportar las bibliotecas privadas de Android de un proyecto o proyecto de biblioteca, no lo haga. Si más de un proyecto o proyecto de biblioteca lo exporta, obtendrá el error de múltiples archivos dex.
strangeluck
6

Me encontré con esto cuando actualicé de adt 14 a 15 y para que funcionara terminé simplemente borrando la carpeta .eclipse (junto con mi configuración) y reinstalando el adt 15.

Jake1164
fuente
6

Después de leer la respuesta de Terrys sobre la eliminación del directorio bin y Larrys sobre la ubicación del directorio ANT:

Moví los archivos ubicados en el directorio BIN de mis proyectos a BIN / CLASSES y ya estoy en funcionamiento.

Editar 1 Luego falló en la segunda ejecución ... doh

Editar 2 Así cerrado Eclipse movió los archivos de regreso a su ubicación original y todo funciona ... ¿qué? No pretendo saber por qué funcionó esto. Se actualizará si hay algún cambio.

Editar 3 He notado en mis copias de seguridad que efectivamente había archivos duplicados en el directorio BIN y BIN / CLASSES.

Entonces la respuesta es: no tengo archivos en ambas ubicaciones. Al menos para mí eso fue lo que funcionó.

HostMyBus
fuente
Trate de reducir las respuestas a: Conclusión útil seguida de hechos de apoyo . Evitar la historia narrativa AMAP; La gente tiende a señalar eso, pensando que "no es una respuesta".
Brock Adams
aplausos por eso, cualquier ayuda para
aclarar
6

Modifica tu archivo eclipse.ini y establezca el parámetro de memoria máxima en

-Xmx1024m

Luego reinicie su computadora.

Funcionó para mi.

Truncarlos
fuente
1
Nada relacionado, dar más memoria no resuelve los problemas de dependencia
Sierisimo
6

encontré una solución, creo?

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

Donde dice: "Lcom / coremedia / iso / AbstractBoxParser $ 1" que resulta ser la ubicación de la biblioteca que importé que causaba el problema. Busqué com.codemedia.iso.AbstractBoxParser $ 1.class y .AbstractBoxParser.class ... tomó ese frasco, lo desempaquetó, eliminó ambos archivos, luego los volvió a empaquetar como un .zip, se agregó a la biblioteca, se limpió y funcionó. ¡No más conflictos para mí! (tampoco actualizaciones o descargas adicionales)

jp093121
fuente
6

Tenía dos versiones diferentes de los archivos .jar de Cordova en mi carpeta libs, eliminé la que ni siquiera estaba usando y funcionó de inmediato. Extraño porque no me di cuenta antes y funcionó antes y de repente dejó de funcionar ...

Dedicado
fuente
5

La actualización ADT R14 cambia donde las clases van al directorio bin / classes (ver http://tools.android.com/recent/buildchangesinrevision14 ). Si está utilizando ANT, debe cambiar la ruta de sus clases de bin a bin / classes. Esto funcionó para mí.

Larry Borsato
fuente
Estoy usando Eclipse. ¿Sabes dónde cambias la ruta de clase en Eclipse?
Terry
5

Solución para mi:

  1. ¡HAGA UNA COPIA DE SEGURIDAD DE SU CÓDIGO!
  2. Navegue hasta el espacio de trabajo de su proyecto (no su proyecto) y ejecute los siguientes comandos:

    dev1: espacio de trabajo $ cd ~ / Documents / workspace / .metadata / .plugins / dev1: espacio de trabajo $ rm -rf org.eclipse.core.resources

  3. Navegue a su directorio Eclipse y escriba este comando:

    dev1: eclipse $ ./eclipse clear

  4. Eclipse comenzará con un espacio de trabajo vacío; no se preocupe, sus proyectos todavía están allí. Sencillo crear un nuevo proyecto a partir de los recursos existentes y las cosas deben ser gravy.

El error exacto que estaba recibiendo: [2012-02-07 14:15:53 ​​- Dex Loader] No se puede ejecutar dex: Varios archivos dex definen Landroid / support / v4 / view / PagerAdapter; [2012-02-07 14:15:53 ​​- ProjectCloud] La conversión al formato Dalvik falló: Incapaz de ejecutar dex: múltiples archivos dex definen Landroid / support / v4 / view / PagerAdapter;

Cookster
fuente
5

Tengo varios proyectos de biblioteca con el mismo nombre de paquete especificado en el AndroidManifest (por lo que R.java no genera nombres de campo duplicados). Tuve que eliminar todos los permisos y actividades del AndroidManifest.xml para todos los proyectos de la biblioteca para eliminar el error, por lo que Manifest.java no se creó varias veces. Esperemos que esto pueda ayudar a alguien.

Jared Rummler
fuente
4

Después de probar todas las otras sugerencias sin suerte, eliminé todo el contenido del directorio 'bin' de mis proyectos, luego ejecuté eclipse nuevamente y funcionó.

JPB
fuente
4

Convertí un proyecto que no es de biblioteca en un proyecto de biblioteca, pero tenía un archivo jar previamente creado en la carpeta libs. Al eliminar este archivo jar, este error desapareció.

PacificSky
fuente
4

Estaba enfrentando el mismo problema que vi mientras empujaba mi aplicación algunos archivos jar que se cargaron dos veces, por lo tanto, error de dex múltiple. Simplemente vaya a las propiedades de su proyecto -> Java Build Path e intente desmarcar el jar que se carga dos veces.

Navi
fuente
4

[Resuelto para mí]

eliminando el "archivo JAR" de la biblioteca duplicada, luego elimine el archivo BuildConfig.java, el proyecto Clean y su trabajo.

AbuQauod
fuente