Android: получение ошибки: преобразование в формат Dalvik не удалось

Я создаю приложение для Android и запускаю ошибку, а при поиске в сети натолкнулся на вашу публикацию на этом и изменил eclipse.ini, чтобы увеличить параметры Xms и Xmx, но эта ошибка не исчезает.

Я использую Eclipse IDE для Java с Android SDK 2.1 в Mac OS. Пожалуйста, помогите или укажите мне кого-то, кто может знать.

Btw, эта ошибка возникает только при добавлении внешних файлов jar (которые мне нужны для моего проекта). Вот список внешних файлов jar, которые у меня есть в моем пути к классам.)

  • httpclient-4.0.1.jar из apache
  • httpcore -4.0.1.jarfrom apache
  • commons-codec-1.3.jar из apache
  • commons-logging-1.1.1.jar от apache
  • json_simple-1.1.jar из google

Вот полная ошибка:

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Lorg/apache/commons/logging/impl/AvalonLogger;
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.dex.file.DexFile.add(DexFile.java:143)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.processClass(Main.java:301)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.processFileBytes(Main.java:278)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.access$100(Main.java:56)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:229)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.cf <http://com.android.dx.cf.direct.ClassPathOpener.pro> .direct.ClassPathOpener.processArchive(ClassPathOpener.java:244)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.processOne(Main.java:247)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.processAllFiles(Main.java:183)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.run(Main.java:139)
[2010-05-02 21:57:05 - MyApp]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[2010-05-02 21:57:05 - MyApp]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[2010-05-02 21:57:05 - MyApp]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[2010-05-02 21:57:05 - MyApp]     at java.lang.reflect.Method.invoke(Method.java:592)
[2010-05-02 21:57:05 - MyApp]     at com.android.ide.eclipse.adt.internal.sdk.DexWrapper.run(Unknown Source)
[2010-05-02 21:57:05 - MyApp]     at com.android.ide.eclipse.adt.internal.build.ApkBuilder.executeDx(Unknown Source)
[2010-05-02 21:57:05 - MyApp]     at com.android.ide.eclipse.adt.internal.build.ApkBuilder.build(Unknown Source)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:627)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
[2010-05-02 21:57:05 - MyApp] 4 errors; aborting
[2010-05-02 21:57:05 - MyApp] Conversion to Dalvik format failed with error 1

Ответ 1

В r14 они изменили способ ссылки на внешние библиотеки и могут вызвать эту проблему. Вы можете исправить это, удалив связанные папки (с именем _src в имени) из дерева папок:

  • Щелкните правой кнопкой мыши и выберите "Путь сборки" > "Удалить из пути сборки"
  • Открывается всплывающее окно. Убедитесь, что "Отсоединение папки от проекта" также проверено, а затем подтвердите его.

см. http://android-developers.blogspot.co.uk/2011/10/changes-to-library-projects-in-android.html

Ответ 2

НЕОПРЕДЕЛЕННОЕ ИСКЛЮЧЕНИЕ ТОП-УРОВНЯ: java.lang.IllegalArgumentException: уже добавлено: Lorg/апач/Обще/регистрация/осущ/AvalonLogger;

Вы пытаетесь добавить org.apache.commons.logging.impl.AvalonLogger дважды в свой проект. Не делайте этого.

Кроме того, многое из того, что вы добавляете через JAR, уже находится в Android, например HttpClient. Это может способствовать вашей ошибке.

Ответ 3

У меня тоже было это, но я убедился, что раньше у меня не было дублированного класса в моем jar файле. Это была другая проблема, связанная с многократной загрузкой той же банки или чего-то еще. Путь к классам и список ссылочных библиотек выглядели соответствующим образом. После некоторого размаха вокруг, некоторая комбинация следующего исправила его:

  • Я использовал другую внешнюю банку, которая также была локальной в каталоге. Я удалил его из пути сборки и снова добавил его из локальной банки.
  • Я удалил все внешние банки и снова добавил их по очереди, убедившись, что они были правильными.
  • Я удалил файл .classpath в моем проекте, а также каталоги bin и gen.
  • Я очистил проект в Eclipse, заставив файлы регенерировать.
  • Я также перетасовал файл jar над каталогом gen в порядке сборки.

Некоторая комбинация вышеизложенного, похоже, поставила проблему. Если это произойдет снова, я буду более осторожен, чтобы увидеть, могу ли я воспроизвести его.

Ответ 4

Я написал сообщение в блоге об одной возможной причине этой ошибки и ее решении здесь. Надеюсь, это поможет.

Ответ 5

Я предполагаю, что вы помещаете свою банку в папку, например, библиотеку, а затем создаете путь из этой папки. Вы просто удалите этот файл jar и попробуйте выбрать свойство из проекта, а затем Java build path Добавить внешние баннеры. Он будет работать нормально.

Ответ 6

У меня была эта проблема, потому что я поместил .jar в мой каталог src/, поэтому Eclipse скопировал его в каталог bin/ и попытался связать его с обоих мест. Перемещение его с src/ на libs/ устранило проблему.

Ответ 7

Моя проблема заключалась в том, что в проектах библиотеки были одинаковые ссылки на проекты. Несколько обновлений назад это было нормальное поведение, но с момента изменения обработки библиотеки мне теперь нужно было удалить ссылки из моих проектов и ссылаться только на одну из библиотек.

Ответ 8

Это всегда происходило со мной после того, как я сделал пользовательскую сборку, используя пользовательскую команду, используя proguard.

Я решил эту проблему, опуская каталог bin моего каталога проекта eclipse, а затем очистив проект (меню Eclipse "project" → "clean..." )

Очевидно, proguard создает беспорядок в этом каталоге, с помощью которого Eclipse запутывается...

Ответ 9

Я действительно злюсь на эту проблему, пытаясь сделать все возможные решения, но никто не работал у меня: очистить проект, перестроить, стирать библиотеки, снова связывать библиотеки, обновлять proguard, редактировать файлы proguard...

Наконец, решение было намного проще: Проект, Инструменты Android, Исправить предложения проекта.

Теперь я могу экспортировать apk.

Ответ 10

Щелкните правой кнопкой мыши папку src и gen и выберите "Путь сборки" > "Удалить из пути сборки". тогда Щелкните правой кнопкой мыши > Путь сборки > Использовать в качестве исходной папки

Ответ 11

Я получал это время от времени, когда я пытался запустить код в несовместимой версии Android (например, 2.2, когда 4.0 была нужна для работы конкретной библиотеки)