EXCEPCIÓN INESPERADA DE SUPERIOR NIVEL: java.lang.IllegalArgumentException: ya agregado

Soy nuevo en Android, tratando de lanzar el proyecto, que se está construyendo y desplegando bien. Pero cada vez que intento iniciar la aplicación desde eclipse, obtengo este error:

UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: already added: Lcom/.../model/AvailabilityRequest$DAY_TIME_PREFERENCE; [2012-02-06 17:32:11 - main-app] Dx at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123) [2012-02-06 17:32:11 - main-app] Dx at com.android.dx.dex.file.DexFile.add(DexFile.java:163) [2012-02-06 17:32:11 - main-app] Dx at com.android.dx.command.dexer.Main.processClass(Main.java:486) ... [2012-02-06 17:32:11 - main-app] Dx at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) [2012-02-06 17:32:11 - main-app] Dx 1 error; aborting [2012-02-06 17:32:11 - main-app] Conversion to Dalvik format failed with error 1 

He matado una cantidad enorme de tiempo para esta cosa estúpida. Obviamente, esto es un problema conocido, pero nada funciona para mí.
Lo que tengo:

Sistema operativoOS X , que es importante creo;
IDE – eclipse 3.7.1
ADT – Versión: 15.0.1.v201111031820-219398
Herramienta de construcción – Maven

Lo que he probado hasta ahora:
– Propiedades-> Java Build Path-> Bibliotecas para eliminar todas las librerías excepto Android xyz, luego Maven-> Actualizar Project Configuration, también para limpiar el proyecto;
– Magia con eclipse de cierre y reapertura;
– Danzas con borrar y recrear el proyecto y las bibliotecas para ello (según el texto del mensaje de error, hay una duplicación de las fuentes, que están en una de las 2 bibliotecas, utilizadas en el proyecto principal).

Después de una de las variantes anteriores (normalmente la primera) empieza a funcionar, pero puedo pasar 20 minutos para hacer que funcione o varias horas …, hoy no puedo hacerlo.

Cualquier idea sería apreciada.

El ADT lanzará una excepción como ésta si su ruta de clases de Eclipse contiene más de una clase del mismo nombre / paquete. En este caso está encontrando más de una instancia de la clase AvailabilityRequest en sus dependencias de Maven.

Puede resolver esto encontrando qué dependencias de classpath contienen los mismos archivos de clase (pulsando Ctrl-Alt-T y tecleando AvailabilityRequest).

A continuación, puede abrir su POM en el editor POM m2e y vaya a la pestaña Jerarquía de dependencias. Esto le permitirá seleccionar la dependencia ajena, que puede excluir haciendo clic con el botón derecho del ratón y seleccionando "Excluir Maven Artefacto …" que agregará automáticamente un elemento <exclusions> a su POM. Esto eliminará el JAR duplicado de su ruta de clases de Eclipse y le permitirá construir su proyecto.

Además, debe tener cuidado con las dependencias que agrega a su POM.

Bueno, por lo que entiendo, lo principal aquí es que estaba usando maven como una herramienta de construcción. Podría construir y desplegar proyecto sin ningún problema, pero no podía iniciarlo desde el entorno (eclipse).

Si no me equivoco, cuando vaya a Run-> Run Configurations de eclipse y cree una aplicación Android para lanzar su proyecto, básicamente le pedirá a eclipse (SDK de Android) que construya el .apk con Ant para usted, no con maven. Eclipse construye el proyecto con Ant y empuja el .apk generado al dispositivo / simulador. Pero como todas las configuraciones del proyecto están en archivos .pom , Ant no puede construir el proyecto y da los errores de este tipo.

Solución:
Inicie la aplicación directamente desde el dispositivo / simulador después de desplegarlo, no a través del menú Ejecutar . Si desea depurar su aplicación, utilice la depuración de DDMS, no la que proporciona un eclipse. En caso de que no sepas dónde está DDMS (como yo en mi caso) – en Mac es Ventana-> Abrir Perspectiva-> Otro … elige DDMS en el menú; Puede ponerlo como un marcador junto con Debug de eclipse y Java . En DDMS encontrarás todas las herramientas interesantes, incluyendo depurar.

PS Esta es una respuesta de un principiante y para principiantes … Si ves algo donde estoy equivocado, por favor, hágamelo saber o siéntase libre de editar mi respuesta.

  • No se pudo encontrar libtoolize, aunque he instalado libtool en OSX Yosimite
  • No puede ver el árbol de origen en android.dmg.sparseimage en mac osx
  • Error de Genymotion: "No se puede cargar el motor de VirtualBox" en Yosemite. VirtualBox instalado
  • Android Studio 1.5.x para Mac se está estrellando al azar
  • Cordova 3.5.0 Error de instalación: instala Android Target 19
  • / Dev / HAX falta cada vez que reinicio mi equipo
  • ¿Dónde está debug.keystore en Mac?
  • Macbook adb no puede abrir la interfaz
  • Cómo analizar el tráfico https de Android 6 emulador con Charles Proxy
  • Java.lang.OutOfMemoryError durante android 2.1 build en Mac OS X 10.6.8
  • Zipalign - Comando no encontrado - Terminal MAC
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.