НЕОПРЕДЕЛЕННОЕ ТОПЛИВНОЕ ИСКЛЮЧЕНИЕ: java.lang.IllegalArgumentException: уже добавлено

Я новичок в Android, пытаясь запустить проект, который строится и развертывается хорошо. Но каждый раз, когда я пытаюсь запустить приложение из eclipse, я получаю эту ошибку:

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 

Я убил огромное количество времени для этой глупой вещи. Очевидно, это известная проблема, но для меня ничего не работает.
Что у меня есть:

Операционная система – OS X , что важно, я думаю;
IDE – eclipse 3.7.1
ADT – Версия: 15.0.1.v201111031820-219398
Инструмент сборки – Maven

То, что я пробовал до сих пор:
– Properties-> Java Build Path -> Библиотеки для удаления всех библиотек, кроме Android xyz, затем Maven-> Update Project Configuration, также для очистки проекта;
– Магия с закрытием и повторным затмением;
– Танцы с удалением и воссозданием проекта и библиотек для него (в соответствии с текстом сообщения об ошибке существует некоторое дублирование источников, которые находятся в одной из двух библиотек, используемых в основном проекте).

После одного из вариантов выше (обычно первого) он начинает работать, но я могу потратить 20 минут, чтобы заставить его работать или несколько часов …, сегодня я не могу этого сделать вообще.

Любая идея была бы оценена.

Solutions Collecting From Web of "НЕОПРЕДЕЛЕННОЕ ТОПЛИВНОЕ ИСКЛЮЧЕНИЕ: java.lang.IllegalArgumentException: уже добавлено"

ADT выдаст такое исключение, если ваш путь класса Eclipse содержит более одного класса с тем же именем / пакетом. В этом случае в ваших зависимостях Maven встречается более одного экземпляра класса AvailabilityRequest .

Вы можете решить эту проблему, указав, какие зависимости в classpath содержат одни и те же файлы классов в них (нажатие Ctrl-Alt-T и ввод в AccessRequest сделает это).

Затем вы можете открыть POM в редакторе m2m POM и перейти на вкладку Иерархия зависимостей. Это позволит вам выбрать внешнюю зависимость, которую затем вы можете исключить, щелкнув правой кнопкой мыши и выбрав «Исключить Maven Artifact …», который автоматически добавит элемент <exclusions> к вашему POM. Это приведет к удалению дубликата JAR из класса Eclipse и позволит вам построить проект.

Кроме того, вы должны быть осторожны с тем, какие зависимости вы добавляете к вашему POM.

Ну, насколько я понимаю, главное здесь было в том, что я использовал maven как инструмент для строительства. Я мог бы создавать и развертывать проект без каких-либо проблем, но я не мог запустить его из среды (eclipse).

Если я не ошибаюсь, когда вы заходите в Run-> Run Configurations eclipse и создаете приложение Android для запуска своего проекта, вы в основном попросите eclipse (Android SDK) построить .apk с Ant для вас, а не с maven. Eclipse создает проект с помощью Ant и подталкивает сгенерированный .apk к устройству / симулятору. Но поскольку все настройки проекта находятся в файлах .pom , Ant не может построить проект и дает такие ошибки.

Решение:
Запустите приложение прямо с устройства / симулятора после его развертывания, а не через меню « Выполнить» . Если вы хотите отлаживать свое приложение, используйте отладку DDMS, а не eclipse. Если вы не знаете, где DDMS (например, я в моем случае) – в Mac это Window-> Open Perspective-> Other … выберите DDMS из меню; Вы можете поместить его как закладку вместе с Debug и Java для eclipse. В DDMS вы найдете все классные инструменты, в том числе отладки.

PS Это ответ от новичка и начинающих … Если вы видите что-то, в чем я ошибаюсь, сообщите мне или не стесняйтесь редактировать мой ответ.