Неможливо виконати 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.
  • Очищення проекту та відновлення - вимкніть параметр "Project-> Build Automatically", потім "Очистити" та "Build", а потім спробуйте запустити. скиньте параметр "Створити автоматично" на Увімкнено
  • Повторна установка AndroidІнструментів для розробників
  • Повторна інсталяція Eclipse (оновлена ​​до останньої версії 3.7.1)
  • Створено новий імпорт проекту з файлової системи
  • Створив новий проект із підриву.

ви працювали над Windows або Mac ... тому що я хотів би дотримуватися наступних відповідей, але я не впевнений, чи не збираються вони працювати над Mac. дякую
McLan

якщо ви імпортували проект бібліотеки, а також імпортували бібліотеку JAR у папку lib, тоді вам доведеться видалити jar-файл із папки lib, а також із [Build Path -> Configure Build Path]. І це працюватиме.
Мехул

Подивіться на мою відповідь за наступним посиланням. stackoverflow.com/a/38391449/3702595
Саттар Hummatli

Відповіді:


462

У мене була така ж проблема, досить дивна, тому що це відбувалося лише під час використання Eclipse (але з Ant було все в порядку). Ось як я це виправив:

  • Клацніть правою кнопкою миші на Project Name
  • Виберіть Build Path ->Configure Build Path
  • В Java Build Path вікні перейдіть на вкладкуOrder and Export

  • Зніміть прапорці з .jarбібліотеки

Лише іноді: на вкладці "Порядок та експорт" у мене не було жодної бібліотеки jar, тому я зняв прапорець з пунктом "Приватні бібліотеки Android". Зараз мій проект працює.


У своєму проекті я включав бібліотеку підтримки з каталогу sdk у свій шлях збирання, і я мав бібліотеку підтримки у папці "libs" для підтримки будівництва мурашок. Я скасував це, і це вирішило мою проблему.
Кріс Фейст

20
Колись між останньою роботою та запуском, у моєму проекті таємничо з’явилася нова бібліотека: «Приватні бібліотеки Android», що містять бібліотеку підтримки, про яку я вже посилався. Так з'явилося це таємниче "кілька декс-файлів ____". Перевірка Java Build Path та перегляд цього нового елемента та зняття прапорці з оригінально включеної бібліотеки підтримки вирішили проблему для мене.
Том Пейс

9
Дуже дякую. Це правильне рішення. Я справді не знаю, чому затемнення має стільки клопів. Зараз ситуація схожа лише на 2 години, які я можу кодувати, і 6 годин я повинен знайти рішення для таких непотрібних питань.
roy mathew

44
На вкладці "Порядок та експорт" у мене не було жодної бібліотеки банок, тому я не знімав Android Private Librariesелемент. Зараз мій проект працює.
Молодший Мейхе

1
У моєму випадку у мене був дублікат „android-support-v4.jar´. Коли я видалив його, помилка пішла
ymerdrengene

94

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

Нарешті я виявив, що мій каталог бін був включений у шлях створення проекту. Я виключив контейнер зі шляху збірки та повторив кроки, описані вище. Це вирішило мою проблему.


42
Що за чорт Google. Ця проблема повертається навіть із R15.
махровий

2
Я відредагував рішення вище, щоб включити остаточну резолюцію. Вирішено постійно.
махровий

7
Коротше кажучи, ніхто насправді не знає, чому виникає проблема, що вона означає і як її виправити (у мене немає жодного каталогу бін у Java Build Path). Я уникав оновлення до R15 з цих причин, залишаючись з R9. Але я все ще маю подібну проблему , не маючи виду. Будь-яка порада чи допомога будуть дуже вдячні.
Білл Мавпа

6
@BillTheApe - погодився. Це поза розчаруванням, це дорого.
Том Редман

@TRedman мені нарешті вдалося вирішити проблему . Не розуміючи чому. Не смійся. LOL +1.
Білл Мавпа

50

[Вирішено для мене]

Властивості проекту Eclipse-> Шлях збірки Java-> Замовлення та експорт

Зніміть прапорці з приватних бібліотек Android.


4
Не допомогло в моєму випадку
скорочення

1
ДЯКУЄМО ВЕЛИКОМУ допомогло мені
madhu527

46

Ніщо з вищезазначеного не допомогло. Зрештою, це була проста проблема.

У мене був проект, який використовує FacebookSDK та ViewPagerIndicator як бібліотечні проекти. Усі були побудовані на Android API 16, і ці два проекти використовували бібліотеку підтримки Android vX (X не бути 16!)

Я додав зовнішній JAR до обох цих проектів і вказав на \ extras \ android \ v4 ... А також вилучив jar V4, який я мав у своїх папках libs.

Очистіть усі проекти та відновіть їх.

Вуаля!

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


36

Ця проблема сталася зі мною, у мене був зовнішній .jar в папці libs під назвою gson-2.2.2.jar, але чомусь їх було два, gson-2.2.2.jar і gson-2.2.2.jar ( 1) я просто видалив останнє, і мій проект знову склався чудово.


2
У мене була подібна проблема, коли в папці libs був старий файл jar і пов’язував його з новою банку в тій же робочій області. Коли ADT знаходить кілька визначень для одного символу, він ставить помилку, як це. Видалення старого файлу jar у папці libs виправлено для мене.
фіат

Зовнішня банка - одна з причин виникнення проблеми, і це трапилось і в моєму випадку. Я просто мав залишкову банку в /libsпопередньому експерименті, в результаті чого з'явився і бібліотечний проект, і створений з нього .jar. Видалення цієї баночки /libsвирішує проблему. +1
ripopenid

31
  1. Закриття затемнення.
  2. Видаліть папку бін всередині папки проекту.
  3. Почніть затемнення і очистіть свій проект.
  4. Тепер біжіть і проблеми не повинно бути

Відповідь Матеуса Вікарі вирішила мою проблему, я видалив повторювані мочки, і це працює як шарм ..
swiftBoy

Працював для мене. Якщо ви manifest fileвидалите затемнення з binкаталогу, додайте його вручну та ще раз очистіть проект.
Мехул Джойсар

Працює для мене. Також переконайтесь, що у вас немає однакового .jar у двох різних місцях (у моєму випадку я мав це як у бібліотечному проекті, так і в проекті, що посилається на цей бібліотечний проект. Здається, Eclipse просто чомусь додав його автоматично)
Magnus W

Для мене я просто очистив цілий робочий простір. Простого очищення проекту було недостатньо. Я вважаю, що моя проблема
стосувалася

Не допомогло в моєму випадку
скорочення

26

Як уже згадували інші, це відбувається, коли у вас є кілька копій одного класу на шляху збирання - у тому числі бін / на вашому класному шляху є одним із способів гарантувати цю проблему.

Для мене це сталося, коли я додав android-support-v4.jar до моїх libs / folder, і якимось затемненням додав другу копію до бін / класів / android-support-v4.jar.

Видалення додаткової копії у біні / класах вирішило проблему - не знаю, чому Eclipse зробив копію саме там.

Ви можете перевірити на це за допомогою

grep -r YourOffendingClassName YourApp | греп баночка


23

Для мене я просто клацніть правою кнопкою миші на проект -> Збірка контуру -> Налаштувати шлях збірки -> Бібліотеки -> Видалити залежність

після того, як це працює.


20

Ця помилка може статися, якщо у вас є дві банки, що містять однакові назви класів, наприклад, у мене було дві бібліотеки: 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 з проектів Properties / Java Build Path / Бібліотеки вирішило проблему для мене.


18

Перейдіть до Project / Properties та Java Build Path та зніміть прапорці з приватних бібліотек Android .

Це ще один випадок подібної помилки

Зроблено


15

Я вилучив залежності Android від шляху збірки, і він працював.

Редагувати: ігноруйте це. У мене була така ж баночка в папці залежності Maven та libs. Я вилучив цю в папці lib.


2
Видалення Android-залежностей зі шляху збірки порушило мій проект. На щастя, відновити його було легко, клацнувши правою кнопкою миші проект> Інструменти Android> Виправити властивості проекту.
azdev

У деяких випадках усунення андроїдних залежностей та відновлення його вирішує деякі проблеми. Але як у моїй редакції, це не так.
Хаді Ток

9

Ви, ймовірно, встановили r14 , ця помилка могла бути викликана оновленням інструментів платформи, вам доведеться перевстановити sdk


Я просто повністю підірвав свій SDK і встановив його свіжим із завантаженого zip-файлу, а потім завантажив API-програми Android на диспетчер SDK для Android. Я покладав великі надії, але проблема зберігається.
махровий

У Windows є прихована папка .android, її також слід видалити.
Рено

така ж проблема існує
McLan

9

Для мене ця проблема існує лише до тих пір, поки в моєму проекті є проекти бібліотеки Android. Тож коли я видаляю всі бібліотеки і виконую, як ви сказали, я можу запустити свою програму ще раз. Якщо є бібліотеки, то навіть витівка з видалення біна виграла роботу.

Я не розумію, чому ця помилка вперше з'явилася сьогодні, оскільки я використовую ADT 14 вже кілька днів. Добре, були й інші помилки, які тримали мене щасливою, хоча.


Багато рішень виглядають як деякі речі з вуду ... :)
Джаспер

8

Видалення папки bin було недостатньо, я також видалив gen папку. Потім після двох відновлень повідомлення про помилку dex не було.


8

Виберіть проект у Провіднику проектів , клацніть правою кнопкою миші та виберіть Властивості -> Шлях збірки Java -> Джерело -> Установіть прапорець Дозволити вихідні папки для вихідних папок.


Не допомогла моя справа.
скорочення

8

Я в основному стикався з тим же питанням. Я видалив папку BIN, потім видалив невикористані файли jar для "Замовлення та імпорт" із затемнення. Він працював після цього


7

Я спізнююсь на цю вечірку, але додаю власний досвід, щоб пізніше її знову знайти :)

Я зіткнувся з цією проблемою після оновлення рекламних плат для sdk android anddlip. Жодне оновлення не проходить безкарно!

Проблема для мене була пов'язана з бібліотечними проектами, моє додаток посилається як на стандартні проекти Java, так і на бібліотечні проекти Android. Я помітив, що в налаштуваннях Java Build Path були включені програми для бібліотеки android src та res папки у списку джерел (оновлення для всіх, хто згадує бін у джерелі, що видає, src та res також були проблемою.)

Тож рішення було:

  1. Видаліть усі посилання на джерела бібліотек Android та джерела проектів із розділу Java Build Path у налаштуваннях як у списку джерел, так і у списку проектів
  2. Переконайтеся, що чисті java залежності вказані у списку проектів та встановлено прапорець на вкладці "Замовлення та експорт", щоб класи були включені в apk
  3. Переконайтесь, що всі залежності бібліотеки Android перелічені у розділі властивостей Android у розділі Android, у розділі бібліотеки нижче перевірених версій SDK.

Це було по дорозі зібрати все, що разом, з інших рішень! Фу!


Добре сказано! Я прийшов до однакових висновків після багато роботи. Я просто хотів додати, що якщо будь-який із ваших бібліотечних проектів включає інші бібліотечні проекти або чисту Java-залежність, їх потрібно додати однаково, інакше ця помилка виникне. Якщо ви дотримуєтесь наведених вище правил для всіх своїх проектів, у вас не виникне жодних проблем.
дивний час

1
Ще одне ... здається, що якщо вам не потрібно експортувати Android-приватні бібліотеки проекту чи бібліотечного проекту, не робіть цього. Якщо їх експортує більше одного проекту чи бібліотеки, ви отримаєте помилку з декількома файлами dex.
дивний

6

Я зіткнувся з цим, коли оновив з ADT 14 до 15, і для того, щоб він працював, я в кінцевому підсумку просто видалив папку .eclipse (разом із моїми налаштуваннями) та повторно встановив adt 15.


6

Прочитавши відповідь Terrys про видалення каталогу bin та Larrys про розташування каталогу ANT:

Я перемістив файли, що знаходяться в моєму каталозі проектів BIN, до BIN / CLASSES, і я працюю та працює.

Редагувати 1 Потім не вдалося при другому запуску ... так

Редагувати 2 Настільки закриті Eclipse перемістили файли назад у вихідне місце і все це працює ... гм що? Я не претендую, що знаю, чому це спрацювало. Буде оновлено, якщо якісь зміни.

Редагувати 3 З моїх резервних копій я зазначив, що в каталозі BIN і BIN / CLASSES дійсно були дублікати файлів.

Тому відповідь така: не майте файлів в обох місцях. Принаймні для мене саме це спрацювало.


Спробуйте зменшити відповіді на: Корисний висновок з наступними підтверджуючими фактами . Уникайте історії розповіді AMAP; Люди прагнуть позначити це, думаючи, що це "не відповідь".
Брок Адамс

привіт за це, будь-яка допомога в тому, щоб зробити мої бразки більш зрозумілими
HostMyBus

6

Змініть файл eclipse.ini і встановіть максимальний параметр пам'яті

-Xmx1024m

Потім перезавантажте комп'ютер.

Це працювало для мене.


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.Ab абстрактBoxParser $ 1.class та .Ab абстрактBoxParser.class .... взяв цю банку, розпакував її, вилучив обидва ці файли, потім перепакував як .zip, додав у бібліотеку, очистив та працював! більше немає конфлікту для мене! (також немає оновлень або додаткових завантажень)


6

У мене в папці libs були дві різні версії Cordova .jar-файлів, я видалив ту, яку я навіть не використовував, і вона працювала відразу. Дивно, бо я не помічав, що раніше, і це працювало раніше, а потім раптом перестало працювати ...


5

Оновлення ADT R14 змінюється, коли класи переходять у каталог бін / класи (див. Http://tools.android.com/recent/buildchangesinrevision14 ). Якщо ви використовуєте ANT, вам слід змінити шлях для ваших класів з бін на бін / класи. Це працювало для мене.


Я використовую Eclipse. Чи знаєте ви, де ви змінюєте шлях класу в Eclipse?
махровий

5

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

  1. ПОВЕРНІТЬ СВОЙ КОД!
  2. Перейдіть до робочої області проекту (не ваш проект) та виконайте такі команди:

    dev1: робоча область $ cd ~ / Документи / робоча область / .metadata / .plugins / dev1: робоча область $ rm -rf org.eclipse.core.resources

  3. Перейдіть до каталогу Eclipse і введіть цю команду:

    dev1: затемнення $ ./eclipse ясно

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

Точна помилка, яку я отримував: [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;


5

У мене є кілька бібліотечних проектів з однаковим іменем пакета, вказаним в AndroidManifest (тому R.java не створює жодних дублікатів імен полів). Мені довелося видалити будь-які дозволи та дії з AndroidManifest.xml для всіх бібліотечних проектів, щоб видалити помилку, тому Manifest.java не створювався кілька разів. Сподіваємось, це може комусь допомогти.


4

Спробувавши всі інші пропозиції, не пощастивши, я видалив увесь вміст каталогу «бін» моїх проектів, потім знову запустив затемнення, і воно спрацювало.


4

Я перетворив небібліотечний проект у бібліотечний проект, але він мав раніше вбудований файл jar у папці libs. Видалення цього файлу jar призвело до усунення цієї помилки.


4

Я зіткнувся з тією ж проблемою, тоді я побачив, під час натискання моєму додатку кілька файлів jar, які завантажувались двічі, отже, кілька помилок dex. Просто перейдіть до своїх властивостей проекту -> Java Build Path і спробуйте зняти прапорець, який завантажується двічі.


4

[Вирішено для мене]

видаливши копію бібліотеки "JAR файл", потім видаліть файл BuildConfig.java, Очистіть проект та його роботу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.