Невозможно выполнить dex: несколько файлов dex определяют массив Lcom / myapp / R $; - PullRequest
385 голосов
/ 24 октября 2011

После обновления до ADT 14 я больше не могу строить свой проект.Это было хорошо до начала обновления.

Ошибка:

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

О подобных проблемах сообщалось, и я пробовал там предложения, включая

  • Перезапуск Eclipse.
  • Очистка проекта и перестройка - отключите опцию «Проект-> Автоматическая сборка», затем «Очистить» и «Построить» проект, затем попробуйте запустить.сбросить параметр «Автоматически создавать» на «Вкл»
  • Переустановка Android Инструменты разработчика
  • Переустановка Eclipse (обновлена ​​до последней версии 3.7.1)
  • СозданоНовый проект импортируется из файловой системы
  • Создан новый проект из Subversion.

Ответы [ 54 ]

461 голосов
/ 17 мая 2013

У меня была та же проблема, довольно странная, потому что это происходило только при использовании Eclipse (но это было нормально с Ant).Вот как я это исправил:

  • Щелкните правой кнопкой мыши на Project Name
  • Выбрать Build Path -> Configure Build Path
  • In Java Build Path, перейдите на вкладку Order and Export

  • Снимите отметку с .jar библиотеки

Только иногда: В заказеи вкладка «Экспорт» У меня там не было библиотеки jar, поэтому я снял флажок «Частные библиотеки Android».Сейчас мой проект запущен.

94 голосов
/ 25 октября 2011

Моя проблема была решена после очистки некоторых каталогов и файлов, оставшихся от предыдущих версий инструментов. ADT Rev 14 изменяет место хранения двоичных файлов . Я удалил весь каталог bin, перезапустил Eclipse, очистил сборку и принудительно перестроил. Это, казалось, сделало трюк сначала, но проблема вернулась после следующего запуска.

Наконец-то я обнаружил, что мой каталог bin включен в путь сборки проекта. Я исключил bin из пути сборки и повторил шаги, описанные выше. Это решило мою проблему.

49 голосов
/ 11 ноября 2014

[Решено для меня]

Свойства проекта Eclipse-> Путь сборки Java-> Порядок и экспорт

Снимите отметку с частных библиотек Android.

47 голосов
/ 15 ноября 2012

Ничего из вышеперечисленного не помогло. В конце концов, это была простая проблема.

У меня был проект, который использует FacebookSDK и ViewPagerIndicator в качестве библиотечных проектов. Все они были построены на Android API 16, и в этих двух проектах использовалась библиотека поддержки Android vX (X не 16!)

Я добавил внешний JAR-файл в оба этих проекта и указал на \ extras \ android \ v4 ... И также удалил банку v4, которую я имел в их папках libs.

Очистить все проекты и перестроить.

Voilla!

Точная ошибка, которую я получил: Невозможно выполнить dex: несколько файлов dex определяют Landroid / support / v4 / view / PagerAdapter; Преобразование в формат Dalvik не удалось: Невозможно выполнить dex: Несколько файлов dex определяют Landroid / support / v4 / view / PagerAdapter;

36 голосов
/ 23 декабря 2012

Эта проблема возникала у меня, у меня в папке libs был внешний файл .jar с именем gson-2.2.2.jar, но по некоторым причинам их было два, gson-2.2.2.jar и gson-2.2.2.jar (1), я просто удалил последний, и мой проект снова заработал нормально.

31 голосов
/ 21 апреля 2012
  1. Закрыть затмение.
  2. Удалить папку bin внутри папки вашего проекта.
  3. Запустите затмение и очистите ваш проект.
  4. Теперь запустите и проблема должна исчезнуть
26 голосов
/ 27 февраля 2013

Как уже упоминали другие, это происходит, когда у вас есть несколько копий одного и того же класса в вашем пути сборки - в том числе bin / в вашем classpath является одним из способов гарантировать эту проблему.

Для меня это произошло, когда я добавил android-support-v4.jar в свою папку libs / и каким-то образом eclipse добавил вторую копию в bin / classes / android-support-v4.jar.

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

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

grep -r YourOffendingClassName YourApp | grep jar

23 голосов
/ 06 февраля 2013

Для меня, я просто щелкаю правой кнопкой мыши на проекте -> Путь сборки -> Настройка пути сборки -> Библиотеки -> Удалить зависимость

после того, как все заработает.

20 голосов
/ 12 августа 2013

Эта ошибка может произойти, если у вас есть две банки, которые содержат одинаковые имена классов, например, У меня было две библиотеки: jsr311-api-1.1.1.jar и jersey-core-1.17.1.jar, обе из которых содержат класс javax.ws.rs.ApplicationPath. Я удалил jsr311-api-1.1.1.jar, и он работал нормально.

19 голосов
/ 17 марта 2013

Я получал эту ошибку после добавления facebooksdk.jar в проект, который уже имел зависимости от android-support-v4.jar . Поскольку facebooksdk.jar уже включает в себя собственный android-support-v4.jar , возникли конфликты. Удаление ранее android-support-v4.jar из проектов Свойства / Путь сборки Java / Библиотеки решило проблему для меня.

...