Не удалось выполнить dex: несколько файлов dex определяют

Я знаю, что этот вопрос задавали здесь несколько раз. Но я пока не видел никакого возможного решения. Прежде чем сделать проект "Запуск в качестве приложения для Android", если я его не очищу, я получаю следующую ошибку и должен перезапустить Eclipse... и снова очистить.

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

com.jstun.core... является частью моей папки src, конечно, я не могу ее удалить. И даже если я удалю этот пакет, другой пакет будет отображаться как ошибка, например:

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

Я видел эту ошибку с момента обновления до ADT 15, я использую Eclipse Galileo на Ubuntu Есть ли у вас какие-либо идеи? Спасибо за любой ответ!

Ответ 1

Это проблема пути сборки.

  • Убедитесь, что папка вашего bin не включена в ваш путь сборки.

  • Щелкните правой кнопкой мыши на своем проекте → перейти к свойствам → Путь сборки.

  • Убедитесь, что библиотека Honeycomb находится в вашей папке libs/, а не в исходной папке.

  • Включите библиотеки в libs/ отдельно в пути сборки.

    Кстати, вы можете принести библиотеку android-support-v4, чтобы получить поддержку Sandwich Ice Cream вместо библиотеки поддержки Honeycomb.

Ответ 2

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

Более подробно: Мое приложение зависит от 2 проектов библиотеки

  • FaceBookSDK 3.0 → , который ссылается на поддержку android-v4
  • ActionBarSherlock → , который ссылается на android-support-v4, но с модифицированной версией для поддержки карт.

Чтобы решить эту проблему, мне пришлось заставлять библиотеку FaceBookSDK напрямую зависеть от библиотеки ABS, а не от библиотеки поддержки.

Ответ 3

Хорошо для меня, я удалил файл в папке libs под названием android support v4.jar, и все это получилось. Goodluck:)

Ответ 4

У меня была такая же ошибка, и каждый раз, когда я ее исправлял, она возвращалась после перезапуска Eclipse.

Прежде всего, как говорили другие люди, убедитесь, что у вас нет нескольких копий одного и того же файла .jar вокруг ваших проектов.

В моем случае у меня был основной проект, который использовал ActionBarSherlock (среди других проектов библиотеки). Трюк, который сработал у меня, шел в ActionBarSherlock --> Properties --> Java Build path --> Order of Export и не выделял Android Private Libraries. Затем перейдите в Project -> Clean, и теперь вы должны правильно построить проект.

Теперь, по какой-то причине, каждый раз, когда я перезапускаю Eclipse, он автоматически включает этот флажок, поэтому мне нужно снова повторить этот процесс.

Надеюсь, это поможет некоторым потерянным душам:)

Ответ 5

Перейдите в Project/properties и Java Built Path и непроверьте частные библиотеки Android.

Ответ 6

Для меня просто зайдите в Project Properties → Java Build Path → Order and Export. Снимите флажок со всей внешней библиотеки, как показано ниже. Это работает для меня. Надеюсь на эту помощь.

Project Properties

Ответ 7

Я также столкнулся с этой проблемой в своем проекте. AVD не может перезагрузить контексты папки, lib, res и etc. проблема: Dex Loader] Невозможно выполнить dex: несколько файлов dex определяют Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl.

Затем я создал новые проекты и скопировал MainActivity.java, activity_main.xml, drawable context. Затем удалите старый проект из пакета explorer, перезапустите Eclipse и AVD. Мой проект теперь работает нормально....:) Я надеюсь, что эти шаги помогут маленьким людям..!!

Ответ 8

У меня такая же проблема, что я пробовал:

  • Элемент списка
  • Открыть путь сборки проекта,
  • Выберите вкладку "Библиотеки",
  • Удалить всю библиотеку, кроме библиотеки Android.
  • Добавление всех необходимых файлов JAR,
  • И сделал!

Он работает для меня, спасибо.

Ответ 9

Если некоторые из вас сталкиваются с этой проблемой с помощью facebook-connent-plugin для телефонной связи

попробуйте удалить файлы в каталоге bin/class/com/facebook/android! → и rebuild

Ответ 10

Как уже упоминалось, это происходит, когда у вас есть несколько копий одного и того же класса в пути сборки или где-либо еще в вашей настройке.

Я добавил android-support-v4.jar в свою папку libs/, и каким-то образом eclipse добавила вторую копию в bin/classes/android-support-v4.jar.

Вы можете проверить это с помощью

grep -r YourOffendingClassName YourApp | grep jar

Удаление дополнительной копии в bin/classes решило проблему - неуверенность в том, почему Eclipse сделал там копию.

Ответ 11

Я получил эту ошибку по другой причине. Я ошибался, добавляя библиотеку поддержки v4 и v13. Это не было необходимо для меня, так как моя minSdkVersion - 15.

Я исправил его только включением библиотеки поддержки v13. Кроме того, обязательно отметьте библиотеку в пути экспорта экспортированной библиотеки в eclipse. Я также переместил его на верх.

Ответ 12

Решение для меня состояло в следующем:

  • → lib в вашем проекте и удалите все несколько элементов.
  • Project- > Properties- > Java build Путь и удаление любой библиотеки зависимостей было добавлено автоматически, а не вами! → Применить
  • Перезапустить Eclipse IDE
  • Теперь очистите проект.
  • Запустить/отладить на устройстве/эмуляторе проект... Удачи

Ответ 13

Даже после прохождения нескольких ответов ни одно решение не помогло мне.

Я удалил "Android Dependencies" из пути сборки. Снова добавлены все файлы jar в путь сборки, и ошибка исчезла. Каким-то образом затмение, казалось, скрывало все.

Ответ 14

У меня была эта проблема, и это не означает, что одна и та же библиотека загружается много раз, но System пытается одновременно загрузить один и тот же имя и, возможно, одно и то же имя пакета, т.е.

  • com.pack1.de и Class Geometry of library1.jar

и еще

  • com.pack1.de и Class Geometry of library2.jar.

Как вы должны подойти? Вы должны проанализировать, какие методы используются, метод library1.jar или library2.

Есть 2 решения,

  • Переименуйте имя_пакета, а затем dalvik интерпретирует, что это разные классы.
  • Или, если вы хотите рискнуть, очистите класс, который не содержит метод, который мы действительно используем.

Я надеюсь, что это разъяснил этот часто задаваемый вопрос.

Ответ 15

Я оставляю этот ответ для тех, кто попадает в этот сценарий так же, как и я.

Я споткнулся здесь и там, прежде чем заметить, что я по ошибке перетащил JAR файл Support Library в мою папку src, и он лежал там. Поскольку я понятия не имел, как это произошло или когда я его бросил, я никогда не мог себе представить, что там что-то не так.

Я получал ту же ошибку, я обнаружил проблему через некоторое время и удалил ее. В настоящее время проект работает нормально.

Ответ 16

Моя проблема была первой:

Невозможно выполнить dex: java.nio.BufferOverflowException. Проверьте журнал Eclipse для трассировки стека.

1) я Щелкните правой кнопкой мыши мой проект → Инструменты Android → Добавить библиотеку поддержки (Запустите приложение... Не работает, поэтому я продолжаю это делать...) 2) Щелкните правой кнопкой мыши в моем проекте еще раз → Свойства → Android → Проверить Android 4.1.2 (16) на цели сборки проекта (Запустите приложение еще раз... и получите следующее:

Невозможно выполнить dex: несколько файлов dex определяют Landroid/support/v4/app/BackStackState;

3) Итак, я пошел в папку "lib" в моем проекте и удалил "старый" Android.support.library.jar (Запустите приложение и перекрестите пальцы и...)

¡IT WORKS!

Надеюсь, это поможет кому-то... Спасибо людям!

Ответ 17

Я удалил зависимости Android от пути сборки, и он сработал.

Ответ 18

Эта ошибка произошла со мной, когда в моем проекте приложения я ссылался на проект библиотеки в рабочем пространстве Eclipse (в моем случае на SDK для Facebook) и в то же время включил SDK Facebook в качестве банки папке libs. Удаление ссылки на библиотеку, но сохранение jar в папке libs удалило ошибку.

Ответ 19

У меня была такая же проблема. Мне пришлось удалить файл .apk, а затем он сработал.

Ответ 20

Для меня я удалил android-support-v4.jar из папки lib, а также удален из пути сборки.

Ответ 21

  • Щелкните правой кнопкой мыши по проекту и перейдите к build Path>configuration build path
  • Выберите вкладку библиотеки и нажмите support-v4 library и нажмите "Удалить"
  • Нажмите OK

а затем очистите проект и запустите его: -)

Ответ 22

В случае, если кто-то еще ударит головой по этой проблеме, как я только что сделал:

В моем случае была задействована цепочка библиотечных проектов. Просто сделать проект чистым во всех библиотеках исправлено все

Ответ 23

Я нашел ниже решение в eclipse... надеюсь, что он работает для вас:)

Right click on the Project Name

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

Unchecked your .jar library's

Ответ 24

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

Ответ 25

Я также пытался найти, что это проблема. В моем случае произошло то, что произошло при копировании apk в электронную почту (перетаскивание) - по ошибке apk был вставлен в папку src в одном из пакетов. После удаления apk из исходной папки он работал нормально.

Ответ 26

У меня была эта проблема в Intellij, и именно потому, что библиотека ActionBarSherlock, добавленная в мой проект, определяла android-support-v4.jar как зависимость от компиляции, и эта банка уже была включена в мой проект, поэтому было несколько копий/версий DEX во время компиляции.

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

Ответ 27

Для меня проблема заключалась в том, что ранее я добавил проект lib (autobahn lib) и позже переключил файл Jar той же библиотеки. Хотя я удалил ссылки на старый проект библиотеки, я получал эту ошибку. После всех ответов здесь я проверил путь сборки и т.д. Но я не добавил эти библиотеки для создания пути вручную. Поэтому мне нечего было удалить. Наконец наткнулся на эту папку.

бен/dexedLibs

Я заметил, что есть два файла jar с тем же именем, что и для Android-автофайла, который вызывает конфликт. Поэтому я удалил все файлы jar в папке dexedLibs и восстановил проект. Это решило проблему.

Ответ 28

Чтобы добавить множество других потенциальных источников... Я обновил все библиотеки в моей папке проекта lib, но затем Eclipse "помог" переустановить все исходные библиотеки. В Eclipse уже не было ссылок на эти библиотеки, но внешняя программа-разработчик dex только захватила все файлы в каталоге lib и, таким образом, получила две версии нескольких файлов библиотеки .jar.

git status идентифицировал новые файлы и git clean -f избавился от них для меня (хотя мне иногда приходилось ждать или перезапускать Eclipse в Windows, потому что у него все еще были файлы, открытые из копии).

Ответ 29

Простое решение ULTRA и лучшее:

Удалите все в правой правой папке главного проекта → Свойства → Путь сборки Java, кроме Android X.Y(где X.Y - версия в android). Очистить и построить. Готово!

Удостоверьтесь, что перед тем, чтобы иметь один android-support-v4.jar.

Ответ 30

Измените параметр памяти maximun в eclipse.ini

-Xmx1024m

И перезагрузите компьютер.

Это сработало для меня:)