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

391

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

Ошибка:

[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.
махровый
источник
Вы работали над Windows или Mac .. потому что я хотел бы следовать следующим ответам, но я не уверен, будут ли они работать на Mac .. спасибо
McLan
если вы импортировали проект библиотеки, а также импортировали JAR библиотеки в папку lib, вам нужно удалить файл jar из папки lib, а также из [Build Path -> Configure Build Path]. И это будет работать.
Мехул
Посмотрите на мой ответ по следующей ссылке. stackoverflow.com/a/38391449/3702595
Саттар Хумматли

Ответы:

462

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

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

  • Снимите флажок с вашей .jarбиблиотеки

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

Marco Bonifazi
источник
В моем проекте я включил библиотеку поддержки из каталога sdk в мой путь сборки, и у меня была библиотека поддержки в папке "libs" для поддержки сборки ant. Я снял галочку с одного, и это исправило мою проблему.
Крис Файст
20
В промежутке между последним сборкой и запуском в моем проекте загадочно появилась новая библиотека: «Частные библиотеки Android», содержащая библиотеку поддержки, на которую я уже ссылался. Таким образом, появилось это таинственное «определение нескольких файлов dex ____». Проверка пути сборки Java и просмотр этого нового элемента, а также снятие отметки с изначально включенной библиотеки поддержки решили проблему для меня.
Том Пейс
9
Большое спасибо. Это правильное решение. Я действительно не знаю, почему в Eclipse столько ошибок. Теперь ситуация составляет всего 2 часа, я могу кодировать, и 6 часов, я должен найти решение таких ненужных вопросов.
Рой Мэтью
44
На вкладке «Порядок и экспорт» у меня не было библиотеки jar, поэтому я выбрал Android Private Librariesпункт. Сейчас мой проект запущен.
Младший Mayhé
1
В моем случае у меня был дубликат «android-support-v4.jar». Когда я удалил его, ошибка исчезла
ymerdrengene
94

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

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

махровые
источник
42
Какого черта гугл. Эта проблема продолжает возвращаться даже с R15.
Терри
2
Я отредактировал решение выше, чтобы включить окончательное решение. Решено навсегда сейчас.
Терри
7
Короче говоря, никто не знает, почему проблема возникает, что она означает и как ее исправить (у меня нет каталога bin в Java Build Path). По этим причинам я избегал обновления до R15, оставаясь с R9. Но у меня все еще есть подобная проблема , без подсказки в поле зрения. Любой совет или помощь будет принята с благодарностью.
Билл Обезьяна
6
@BillTheApe - согласился. Это вне всякого разочарования, это дорого.
Том Редман
@ TREDMAN Мне наконец удалось решить проблему . Без понимания почему. Не смейся LOL +1.
Билл Обезьяна
50

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

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

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

user802467
источник
4
Не помогло в моем случае
редукция
1
СПАСИБО
ОГРОМНОЕ
46

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

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

Я добавил внешний JAR в оба этих проекта и указал его на \ extras \ android \ v4 ... А также удалил jar v4, который я имел в их папках libs.

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

Voilla!

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

Рой Вайнберг
источник
36

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

Селлек
источник
2
У меня была похожая проблема, когда в папке libs был старый файл jar, и я связал его с новым jar в той же рабочей области. Когда ADT находит несколько определений для одного и того же символа, он выдает ошибку, подобную этой. Удаление старого файла jar в папке libs исправило это для меня.
Phyatt
Внешняя банка - одна из причин проблемы, и так было и в моем случае. У меня просто был оставшийся в моем банке /libsиз предыдущего эксперимента, в результате чего был создан и библиотечный проект, и .jar, сгенерированный из него. Удаление этой банки под /libsрешает проблему. +1
рипопенид
31
  1. Закрыть затмение.
  2. Удалите папку bin внутри вашей папки проекта.
  3. Начните затмение и очистите ваш проект.
  4. Теперь беги и проблема должна исчезнуть
Mohit marwal
источник
Ответ Матеуса Викари решил мою проблему, я удалил дублирующихся библиотек, и это работает как шарм ..
swiftBoy
Работал на меня. Если вы manifest fileудалите Eclipse из binкаталога, добавьте его вручную и снова очистите проект.
Мехул Джойсар
Работает для меня. Также убедитесь, что у вас нет одного и того же .jar в двух разных местах (в моем случае он имелся как в проекте библиотеки, так и в проекте, ссылающемся на этот проект библиотеки. Кажется, Eclipse просто добавил его автоматически по некоторым причинам)
Magnus W
Для меня, я просто очистил ВСЕ рабочее пространство. Просто очистки проекта было недостаточно. Я полагаю, что моя проблема была связана с переключением одного из проектов на «Библиотеку» во время чистой операции
трикнология
Не помогло в моем случае
редукция
26

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

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

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

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

grep -r YourOffendingClassName YourApp | гре банку

chaqke
источник
23

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

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

sonida
источник
20

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

оборота Матеус Викари
источник
1
Это идеальное решение для меня. Я добавил одну и ту же библиотеку дважды. Спасибо.
swiftBoy
19

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

user1293131
источник
18

Зайдите в Проект / Свойства и Путь сборки Java и снимите флажок « Частные библиотеки Android» .

Это также еще один случай такой ошибки

Выполнено

Hiren Patel
источник
15

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

Изменить: игнорировать это. У меня была та же самая банка в моей папке зависимостей и библиотек maven. Я удалил один в папке lib.

оборота Оша Махуэ
источник
2
Удаление зависимостей Android из пути сборки сломало мой проект. К счастью, это было легко восстановить, щелкнув правой кнопкой мыши проект> Инструменты Android> Исправить свойства проекта.
Аздев
В некоторых случаях удаление андроид-зависимостей и их восстановление решает некоторые проблемы. Но, как в моем редактировании, это не так.
Хади Ток
9

Возможно, вы установили r14 , возможно , эта ошибка вызвана обновлением инструментов платформы, вам необходимо переустановить SDK

Рено
источник
Я просто полностью сдул свой SDK и установил его только что из загруженного zip-файла, а затем загрузил API-интерфейсы Android с помощью Android SDK Manager. У меня были большие надежды, но проблема сохраняется.
Терри
В Windows есть скрытая папка .android, которую вы тоже должны удалить.
Рено
такая же проблема существует
McLan
9

Для меня эта проблема существует только до тех пор, пока в моем проекте участвуют проекты библиотек Android. Поэтому, когда я удаляю все библиотеки и делаю, как вы сказали, я снова могу запустить свое приложение. Если есть задействованные библиотеки, то даже трюк с бин-удалением выиграл.

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

mephju
источник
Многие из решений похожи на некоторые вещи вуду ... :)
Джаспер
8

Удаление папки bin было недостаточно, я также удалил папку gen. Затем после двух перестроений сообщение об ошибке dex пропало.

Рудольф Ползер
источник
8

Выберите проект в Project Explorer , щелкните правой кнопкой мыши и выберите « Свойства» -> « Путь сборки Java» -> « Источник» -> установите флажок « Разрешить выходные папки для исходных папок».

прасантинг
источник
Не помогло мое дело.
избыточный
8

Я в основном столкнулся с той же проблемой. Я удалил папку BIN, затем удалил неиспользуемые файлы JAR для заказа и импорта из затмения. ЭТО РАБОТАЕТ после этого

Ахсан Захир
источник
7

Я опаздываю на эту вечеринку, но добавляю свой собственный опыт, чтобы найти его позже :)

Я столкнулся с этой проблемой после обновления андроида SDK и затмения ад-инс. Ни одно обновление не остается безнаказанным!

Для меня проблема была связана с библиотечными проектами, мое приложение ссылается как на стандартные проекты Java, так и на проекты библиотек Android. Я заметил, что настройки Java Build Path включали в себя папки src и res для проектов библиотеки Android в списке источников (голосование против всех, кто упоминал bin в исходном коде проблемы, src и res также были проблемой).

Итак, решение было:

  1. Удалите все ссылки на источники библиотек Android и ссылки на проекты из раздела «Путь сборки Java» параметров как в списке источников, так и в списке проектов.
  2. Убедитесь, что чисто Java-зависимости перечислены в списке проектов и отмечены на вкладке «Порядок и экспорт», чтобы классы были включены в apk.
  3. Убедитесь, что все зависимости библиотеки Android перечислены в разделе свойств Android в разделе библиотеки под проверенными версиями SDK.

Это было давно, чтобы соединить все это с другими решениями! Уф!

сойка
источник
Хорошо сказано! Я пришел к одинаковым выводам после большой работы. Я просто хотел добавить, что если любой из ваших библиотечных проектов включает в себя другие библиотечные проекты или зависимости от чистого Java, все они должны быть добавлены одинаково, в противном случае возникнет эта ошибка. Если вы будете следовать приведенным выше правилам для всех ваших проектов, у вас не должно возникнуть никаких проблем.
странное
1
Еще одна вещь ... кажется, что если вам не нужно экспортировать частные библиотеки Android проекта или проекта библиотеки, не делайте этого. Если его экспортирует более одного проекта или библиотечного проекта, вы получите ошибку нескольких файлов dex.
странное
6

Я столкнулся с этим, когда я обновил adt 14 до 15, и чтобы он заработал, я просто удалил папку .eclipse (вместе с моими настройками) и переустановил adt 15.

Jake1164
источник
6

После прочтения ответа Terrys об удалении каталога bin, а Larrys о расположении каталога ANT:

Я переместил файлы, расположенные в каталоге BIN моих проектов, в BIN / CLASSES, и я запущен.

Изменить 1 Затем не удалось на второй запуск ... до

Редактировать 2 Итак, закрытое Eclipse переместило файлы обратно в исходное местоположение и все работает ... а что? Я не притворяюсь, что знаю, почему это сработало. Будет ли обновление, если какие-либо изменения.

Edit 3 Я заметил из своих резервных копий, что действительно были дубликаты файлов в каталоге BIN и BIN / CLASSES.

Поэтому ответ таков: не располагайте файлы в обоих местах. По крайней мере, для меня это то, что сработало.

HostMyBus
источник
Постарайтесь уменьшить количество ответов на: Полезное заключение, сопровождаемое подтверждающими фактами . Избегайте истории повествования AMAP; Люди склонны отмечать это, думая, что это «не ответ».
Брок Адамс
приветствует это, приветствуется любая помощь, чтобы сделать мои разговоры более ясными
HostMyBus
6

Измените файл eclipse.ini и установите для параметра максимальной памяти значение

-Xmx1024m

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

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

Truncarlos
источник
1
Ничто не связано, предоставление большего объема памяти не решает проблемы зависимости
Sierisimo
6

нашел решение я верю ??

    [2013-04-28 23:56:09 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/coremedia/iso/AbstractBoxParser$1;

Где написано: «Lcom / coremedia / iso / AbstractBoxParser $ 1», это просто местоположение импортированной мною библиотеки, которая вызывала проблему. Искал com.codemedia.iso.AbstractBoxParser $ 1.class и .AbstractBoxParser.class .... взял этот jar-файл, распаковал его, удалил оба этих файла, затем переупаковал как .zip, добавил в библиотеку, очистил и работал! нет больше конфликта для меня! (также нет обновлений или дополнительных загрузок)

jp093121
источник
6

У меня в папке libs было две разные версии .jar-файлов Cordova, я удалил ту, которую даже не использовал, и она сразу сработала. Странно, потому что я не замечал этого раньше, и это работало раньше, а потом вдруг перестало работать ...

Dediqated
источник
5

Обновление ADT R14 изменяется, когда классы переходят в каталог bin / classes (см. Http://tools.android.com/recent/buildchangesinrevision14 ). Если вы используете ANT, вы должны изменить путь для ваших классов с bin на bin / classes. Это сработало для меня.

Ларри Борсато
источник
Я использую Eclipse. Знаете ли вы, где вы меняете путь к классам в Eclipse?
Терри
5

Решение для меня:

  1. ЗАПИШИТЕ СВОЙ КОД!
  2. Перейдите к рабочей области вашего проекта (не к вашему проекту) и выполните следующие команды:

    dev1: рабочее пространство $ cd ~ / Documents / workspace / .metadata / .plugins / dev1: рабочее пространство $ rm -rf org.eclipse.core.resources

  3. Перейдите в каталог Eclipse и введите следующую команду:

    dev1: eclipse $ ./eclipse clear

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

Точная ошибка, которую я получил: [2012-02-07 14:15:53 ​​- Dex Loader] Невозможно выполнить dex: несколько файлов dex определяют Landroid / support / v4 / view / PagerAdapter; [2012-02-07 14:15:53 ​​- ProjectCloud] Сбой преобразования в формат Dalvik: невозможно выполнить dex: несколько файлов dex определяют Landroid / support / v4 / view / PagerAdapter;

оборота Cookster
источник
5

У меня есть несколько библиотечных проектов с одинаковым именем пакета, указанным в AndroidManifest (поэтому R.java не генерирует повторяющиеся имена полей). Мне пришлось удалить все разрешения и действия из файла AndroidManifest.xml для всех проектов библиотеки, чтобы устранить ошибку, чтобы файл Manifest.java не создавался несколько раз. Надеюсь, это может кому-то помочь.

Джаред Раммлер
источник
4

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

JPB
источник
4

Я преобразовал небиблиотечный проект в библиотечный, но в папке libs у него был ранее созданный файл jar. Удаление этого файла JAR привело к исчезновению этой ошибки.

PacificSky
источник
4

Я столкнулся с той же проблемой, а затем увидел, что, нажимая на мое приложение, некоторые файлы jar, которые были загружены дважды, следовательно, многократная ошибка dex. Просто зайдите в свойства вашего проекта -> Java Build Path и попробуйте снять флажок jar, который загружается дважды.

Navi
источник
4

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

удалив дубликат библиотеки "JAR-файл", затем удалите файл BuildConfig.java, очистите проект и его работу.

AbuQauod
источник