Tidak dapat menjalankan dex: Beberapa file dex ditentukan

125

Saya tahu pertanyaan ini telah ditanyakan di sini beberapa kali sebelumnya. Tetapi saya belum melihat solusi yang memungkinkan. Sebelum saya membuat proyek 'Jalankan sebagai Aplikasi Android', jika saya tidak membersihkannya, saya menerima kesalahan berikut dan harus memulai ulang Eclipse ... dan bersihkan lagi.

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

com.jstun.core ... adalah bagian dari folder src saya, tentu saja saya tidak dapat menghapusnya. Dan bahkan jika saya menghapus paket itu, paket lain akan muncul sebagai kesalahan seperti:

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

Saya telah melihat kesalahan ini sejak memperbarui ke ADT 15, saya menggunakan Eclipse Galileo di Ubuntu Apakah Anda punya ide? Terima kasih atas balasan!

Tran Ngu Dang
sumber
Saya mencoba hampir semua yang ada di utas ini tetapi tidak berhasil. Saya menyelesaikan masalah dengan menghapus proyek kemudian membuat yang baru dan menyalin file sumber dari cadangan.
linuxjava
Lihatlah jawaban saya di tautan berikut. stackoverflow.com/a/38391449/3702595
Sattar Hummatli

Jawaban:

136

Ini adalah masalah jalur build.

  • Pastikan folder tempat sampah Anda tidak termasuk dalam jalur pembangunan Anda.

  • Klik kanan pada proyek Anda -> pergi ke properti -> Build Path.

  • Pastikan bahwa perpustakaan Honeycomb ada di libs/folder Anda dan bukan di folder sumber Anda.

  • Sertakan perpustakaan secara libs/individual di jalur build.

    BTW, Anda mungkin ingin membawa android-support-v4perpustakaan untuk mendapatkan dukungan Ice Cream Sandwich daripada perpustakaan dukungan Honeycomb.

terry
sumber
50
Masalah ini juga terjadi jika Anda memiliki beberapa versi pustaka yang disertakan dalam jalur pembangunan Anda secara fisik. Menghapus pustaka yang tidak terpakai dari libsjalur, bersihkan dan simpan proyek, restart Eclipse dan kompilasi ulang lagi bekerja untuk saya.
Aryo
Mengecualikan folder bin dari path build menyelesaikannya untuk saya. Terima kasih!
alekop
2
Akar penyebab masalah adalah bahwa salah satu perpustakaan menggunakan perpustakaan 9oldandroid sebagai toples yang disimpan dalam direktori ./libs, sementara proyek lain menggunakan sembilanoldandroid dengan merujuknya
Deepika Lalra
Ini juga bisa terjadi ketika Anda memiliki sesuatu seperti Foo.javadalam sebuah paket dan Foo.javadalam libs/
stop
Kesalahan / bug ini terjadi ketika folder proyek Anda ada di Google Drive. Saya kira itu bug saat Drive sinkronisasi. Setidaknya bagi saya
ymerdrengene
58

Saya telah mengalami kesalahan yang sama hari ini dan alasannya adalah bahwa perpustakaan dukungan direferensikan oleh dua proyek perpustakaan yang digunakan oleh proyek aplikasi saya tetapi dengan versi yang berbeda.

Secara lebih rinci: Aplikasi saya tergantung pada 2 proyek perpustakaan

  • FaceBookSDK 3.0 -> yang mereferensikan android-support-v4
  • ActionBarSherlock -> yang mereferensikan android-support-v4 tetapi dengan versi yang dimodifikasi untuk mendukung peta.

Untuk mengatasi masalah ini saya harus membuat pustaka FaceBookSDK bergantung pada pustaka ABS dan bukannya pustaka pendukung secara langsung.

M.Sameer
sumber
Ya, masalah saya mirip. Dua perpustakaan memiliki perpustakaan httpmime, jadi saya menghapus satu dan membuatnya menunjuk ke proyek lain.
Matt
10
bisakah kalian menjelaskan dengan tepat bagaimana Anda melakukannya?
Samih A
3
@samih dalam contoh yang saya sebutkan, pertama saya menghapus android-support-v4 jar dari folder lib proyek FaceBookSDK dan membangun jalur. Kemudian saya menambahkan referensi ke proyek perpustakaan ActionBarSherlock.
M.Sameer
bagi saya ternyata pengembang lain menambahkan versi baru dari file jar perpustakaan tanpa menghapus yang lama. Jadi ada dua botol dengan kelas yang sama. Jadi kesalahan 'Beberapa file dex ...' Anda bisa melakukan grep -r 'OffendingClassName' | grep jar $ untuk mencari file jar yang berisi nama kelas.
bibstha
Mirip, tetapi saya tidak sengaja menambahkan android-support-v4.jarke kedua jalur pembangunan Eclipse saya dan menambahkannya secara manual ke libsfolder yang saya buat. Karena referensi duplikat, saya tidak bisa mengkompilasi (dan mendapat pesan kesalahan yang didapat OP). Saya menghapus libsfolder yang saya buat dengan bodoh dan semuanya bekerja. Terima kasih atas petunjuknya.
kurtzbot
47

Nah bagi saya, saya menghapus file di folder libs yang disebut dukungan android v4.jar dan semuanya berhasil. Semoga berhasil :)

akemalFirdaus
sumber
1
Bagi saya itu adalah file dukungan android v4.jar (1) .jar saya baru saja menghapusnya, dan membersihkan proyek!
ymerdrengene
33

Saya memiliki kesalahan yang sama terjadi dan setiap kali saya memperbaikinya, itu akan kembali setelah saya memulai ulang Eclipse.

Pertama-tama, seperti kata orang lain, pastikan Anda tidak memiliki banyak salinan dari file .jar yang sama di sekitar proyek Anda.

Dalam kasus saya, saya memiliki proyek utama yang menggunakan ActionBarSherlock (di antara proyek perpustakaan lainnya). Trik yang berhasil bagi saya adalah masuk ActionBarSherlock --> Properties --> Java Build path --> Order of Exportdan tidak memilih Android Private Libraries. Lalu masuk ke Project -> Cleandan sekarang Anda harus dapat membangun proyek dengan benar.

Sekarang, untuk beberapa alasan, setiap kali saya memulai ulang Eclipse, secara otomatis mengaktifkan kotak centang itu, jadi saya harus mengulangi proses ini lagi.

Semoga ini bisa membantu jiwa yang hilang di luar sana :)

Henrique
sumber
32

Buka Project / properties dan Java Built Path dan hapus centang pada Perpustakaan Pribadi Android

Pravin Bhosale
sumber
1
Atasi masalah saya juga!
Totic
Tetapi menghentikan gcm.jar untuk bekerja, bagaimana membuatnya bekerja tanpa kesalahan ini?
Narendra Singh
Saya mengalami kesalahan: multiple dex Lcom / google / android / gms / analytics / internal / Command $ 1. Saya mendapatkan ini setelah memutakhirkan google play ke 22.1.1. Tidak memilih Perpustakaan Pribadi di dalam proyek google play menghapus kesalahan
eugene
Anda menyelamatkan hidup saya! Thx ~
Leo Hsieh
15

Bagi saya, cukup buka Properti Proyek >> Java Build Path >> Orde dan Ekspor. Hapus centang semua perpustakaan eksternal, seperti gambar di bawah ini. Ini bekerja untuk saya. Semoga bantuan ini.

Properti Proyek

Hoa Hoang
sumber
itu masalah bagi saya
Piyush-Ask Any Difference
8

Saya juga menghadapi masalah ini dalam proyek saya. AVD tidak dapat memuat ulang konteks folder, lib, res, dan lain-lain. masalah: Dex Loader] Tidak dapat menjalankan dex: Beberapa file dex ditentukan Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl.

Kemudian, saya membuat proyek baru dan menyalin MainActivity.java,, activity_main.xmlkonteks yang dapat ditarik. Kemudian hapus proyek lama dari paket jelajahi, restart Eclipse dan AVD Anda. Proyek saya sekarang berfungsi dengan baik .... :) Saya harap langkah ini akan membantu Anda sedikit orang .. !!

satya
sumber
8

Saya memiliki masalah yang sama, yang saya coba adalah:

  1. Daftar barang
  2. Buka Proyek Build Path,
  3. Pilih tab "Libraries",
  4. Hapus semua perpustakaan kecuali Perpustakaan Android
  5. Menambahkan semua File JAR yang diperlukan,
  6. Dan dilakukan!

Ini bekerja untuk saya, terima kasih.

Racun Fedy
sumber
ya, saya baru saja melakukan hal yang sama. menghapus semua file jar, ditambahkan kembali. dalam rangka dan ekspor, dependensi tidak diperiksa dan memeriksa semua perpustakaan yang ditambahkan tadi
Maulik Sheth
6

Jika beberapa dari Anda menghadapi masalah ini dengan facebook-connent-plugin for phonegap

cobalah untuk menghapus file di direktori bin / class / com / facebook / android! -> dan membangun kembali

Samih A
sumber
Ini adalah jawaban yang benar. Penjelasannya adalah ---- Facebook.android disertakan dua kali. Sekali di facebookSDK.jar yang termasuk dalam proyek Anda dan sekali file java langsung dimasukkan dalam proyek Anda. menghapusnya dari proyek Anda adalah cara bersih untuk melakukannya. semua jawaban lain hanya bekerja di sekitar yang tidak akan mengekspor definisi atau sesuatu ....
Sandeep Taneja
6

Seperti yang disebutkan orang lain, ini terjadi ketika Anda memiliki beberapa salinan dari kelas yang sama di jalur pembuatan Anda, atau di tempat lain di pengaturan Anda.

Saya telah menambahkan android-support-v4.jar ke libs / folder saya, dan entah bagaimana eclipse menambahkan salinan kedua ke bin / class / android-support-v4.jar.

Anda dapat menguji untuk ini dengan

grep -r YourOffendingClassName YourApp | tabung grep

Menghapus salinan tambahan di bin / kelas memecahkan masalah - tidak yakin mengapa Eclipse membuat salinan di sana.

chaqke
sumber
1
Saya mencoba semua opsi lain yang tercantum di sini, tetapi ini adalah salah satu yang menyelesaikannya untuk saya! :) Dan ya, Eclipse harus mati dan Android Studio harus mendapatkan versi 1.0 - dunia kemudian akan menjadi tempat yang lebih baik.
Johan Paul
5

Saya mendapatkan kesalahan ini karena alasan lain. Saya salah menambahkan kedua perpustakaan dukungan v4 DAN v13. Ini tidak perlu bagi saya karena minSdkVersion saya adalah 15.

Saya memperbaikinya dengan hanya menyertakan perpustakaan dukungan v13. Juga, pastikan untuk memeriksa tanda pustaka di jalur membangun pustaka yang diekspor dalam gerhana. Saya juga memindahkannya ke atas.

Ryan R
sumber
Inilah yang membuat saya juga. Pustaka dukungan v13 menyertakan pustaka dukungan v4, jadi dex menunjukkan deklarasi beberapa kelas.
Kyle Falconer
4

Bahkan setelah melalui beberapa jawaban, tidak ada solusi yang berhasil untuk saya.

Saya menghapus "Ketergantungan Android" dari jalur build. Menambahkan semua file jar lagi ke jalur build dan kesalahan hilang. Entah bagaimana gerhana tampaknya menumpahkan hal-hal itu.

JaydeepW
sumber
3

Saya meninggalkan jawaban ini untuk seseorang yang masuk dalam skenario ini seperti yang saya lakukan.

Saya tersandung di sana-sini sebelum menyadari bahwa saya keliru menyeret dan menjatuhkan file JAR Dukungan Perpustakaan ke folder src saya dan itu tergeletak di sana. Karena saya tidak tahu bagaimana itu terjadi atau ketika saya menjatuhkannya di sana, saya tidak pernah bisa membayangkan ada yang salah di sana.

Saya mendapatkan kesalahan yang sama, saya menemukan masalah setelah beberapa waktu dan menghapusnya. Proyek sekarang berfungsi dengan baik.

kishu27
sumber
3

Solusi bagi saya adalah hanya melakukan hal-hal berikut:

  1. -> direktori lib di proyek Anda dan hapus beberapa elemen.
  2. Project-> Properties-> Java build Path dan hapus Dependency Library ditambahkan secara otomatis dan bukan oleh Anda! -> Melamar
  3. Mulai ulang IDE Eclipse
  4. Sekarang Bersihkan proyek.
  5. Jalankan / Debug pada Perangkat / Emulator proyek ... Semoga Sukses
GuyN
sumber
masalahnya masih berlanjut
Akhil Jain
2

Masalah saya pada awalnya adalah:

Tidak dapat menjalankan dex: java.nio.BufferOverflowException. Periksa Eclipse log untuk jejak tumpukan.

1) Saya Klik kanan pada proyek saya -> Peralatan Android -> Tambahkan Dukungan Perpustakaan (Jalankan aplikasi saya ... Tidak berfungsi jadi saya tetap menjalankannya ...) 2) Klik kanan pada proyek saya lagi -> Properti -> Android -> Periksa Android 4.1.2 (16) di Project Build Target (Jalankan kembali aplikasi ... dan dapatkan ini:

Tidak dapat menjalankan dex: Beberapa file dex menentukan Landroid / support / v4 / app / BackStackState;

3) Jadi aku pergi ke folder "lib" pada proyek saya dan menghapus yang "lama" Android.support.library.jar (Jalankan aplikasi dan jari salib dan ...)

BERHASIL!

Semoga ini bisa membantu seseorang ... Terima kasih banyak orang!

daros
sumber
2

Saya punya masalah ini dan itu tidak berarti, bahwa perpustakaan yang sama dimuat berkali-kali tetapi Sistem mencoba memuat kelas dengan nama yang sama dan mungkin nama paket yang sama secara bersamaan, yaitu

  • com.pack1.dedan Class Geometrydarilibrary1.jar

dan lainnya

  • com.pack1.dedan Class Geometrydarilibrary2.jar.

Bagaimana seharusnya Anda mendekati? Anda harus menganalisis metode mana yang digunakan, metode library1.jar atau library2.

Ada 2 Solusi,

  1. Ganti nama nama paket dan kemudian dalvik mengartikan, bahwa mereka adalah kelas yang berbeda
  2. Atau jika Anda ingin mengambil risiko, bersihkan kelas, yang tidak mengandung metode, yang benar-benar kami gunakan.

Saya harap ini telah mengklarifikasi pertanyaan yang sering diajukan ini.

Deepend
sumber
2

Saya menghapus dependensi Android dari build path dan itu berhasil.

Cüneyt
sumber
1

Kesalahan ini terjadi pada saya ketika dalam proyek aplikasi saya, saya mereferensikan proyek Perpustakaan di ruang kerja Eclipse saya (dalam kasus saya Facebook SDK) dan pada saat yang sama memasukkan Facebook SDK sebagai toples di folder libs. Menghapus referensi pustaka tetapi menyimpan toples di folder libs menghapus kesalahan.

Gunnar Karlsson
sumber
1

Saya memiliki masalah yang sama. Saya harus menghapus .apkfile dan kemudian berhasil.

sefodu
sumber
1

Bagi saya, saya menghapus android-support-v4.jar dari folder lib dan juga dihapus dari build path.

Rach
sumber
Halo Rach, selamat datang di Stackoverflow. Jawaban Anda ditandai sebagai berkualitas rendah karena panjang dan kontennya. Saat menjawab pertanyaan, berikan deskripsi tambahan tentang cara mengatasi masalah. Ini akan membantu orang lain dan memberi Anda reputasi :)
superhero
1
  • Klik kanan pada proyek dan pergi ke build Path>configuration build path
  • Pilih tab perpustakaan dan klik pada support-v4 librarydan klik hapus
  • Klik OK

dan kemudian bersihkan proyek Anda dan jalankan akan bekerja :-)

Iman Marashi
sumber
0

Kalau-kalau ada orang lain yang membungkam masalah ini seperti yang baru saja saya lakukan:

Kasus saya melibatkan serangkaian proyek perpustakaan. Cukup melakukan proyek bersih pada semua perpustakaan memperbaiki semuanya

Joe Plante
sumber
0

Saya menemukan solusi di bawah ini dalam gerhana ... semoga berhasil untuk Anda :)

Right click on the Project Name

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

Unchecked your .jar library's
Harshal Benake
sumber
0

Masalah ini terjadi ketika pustaka yang sama ditambahkan ke proyek Anda beberapa kali. Jika Anda belum menambahkan perpustakaan beberapa kali secara disengaja, lihat dependensi / perpustakaan pribadi dari perpustakaan yang telah Anda tambahkan dalam proyek Anda, kemungkinan besar mereka sudah menyertakan perpustakaan yang menyebabkan konflik ini.

Umer Farooq
sumber
0

Saya juga berjuang untuk menemukan ini masalah. Dalam kasus saya apa yang terjadi adalah ketika menyalin apk ke email (drag drop) - secara tidak sengaja apk disisipkan di folder src di salah satu paket. Setelah menghapus apk dari folder sumber itu berfungsi dengan baik.

Prabakaran
sumber
0

Saya mengalami masalah ini di Intellij dan itu karena perpustakaan ActionBarSherlock yang saya tambahkan ke proyek saya mendefinisikan android-support-v4.jar sebagai ketergantungan kompilasi dan toples ini sudah termasuk dalam proyek saya sehingga ada beberapa salinan / versi DEX di waktu kompilasi.

Solusinya adalah mengubah ketergantungan modul ActionBarSherlock untuk tabung ini menjadi Runtime, bukan kompilasi, karena proyek saya sudah menyediakannya.

Tepat waktu
sumber
0

Bagi saya masalahnya adalah bahwa, saya telah menambahkan proyek lib (autobahn lib) sebelumnya dan kemudian beralih ke file Jar dari perpustakaan yang sama. Meskipun saya telah menghapus referensi ke proyek perpustakaan yang lebih tua, saya mendapatkan kesalahan ini. Setelah semua jawaban di sini, saya memeriksa jalur pembuatan dll. Tetapi saya belum menambahkan lib ini untuk membangun jalur secara manual. Jadi saya tidak perlu menghapus. Akhirnya menemukan folder ini.

bin / dexedLibs

Saya perhatikan bahwa ada dua file jar dengan nama yang sama sesuai dengan autobahn Android yang menyebabkan konflik. Jadi saya menghapus semua file jar di folder dexedLibs dan membangun kembali proyek. Itu menyelesaikan masalah.

Ajith Memana
sumber
0

Untuk menambahkan segudang sumber potensial lainnya ... Saya telah memperbarui semua perpustakaan di libfolder proyek saya, tetapi kemudian Eclipse "membantu" menginstal ulang semua perpustakaan asli. Tidak ada lagi referensi di dalam Eclipse ke pustaka-pustaka ini tetapi program pembuat dex eksternal hanya mengambil semua file di libdirektori dan dengan demikian mendapat dua versi dari beberapa .jarfile pustaka .

git statusmengidentifikasi file-file baru dan git clean -fmenyingkirkan mereka untuk saya (meskipun saya kadang-kadang harus menunggu atau me-restart Eclipse pada Windows karena masih memiliki file yang terbuka dari salinan).

Brian White
sumber
0

ULTRA solusi sederhana dan terbaik:

Hapus semua yang ada di Klik Kanan Folder Proyek Utama -> Properti -> Java Build Path kecuali Android XY (di mana XY adalah versi di android). Bersihkan, dan Bangun. Selesai!

Pastikan sebelumnya untuk memiliki satu android-support-v4.jar.

Andrés Fg
sumber
0

Jika Anda menggunakan cordova, coba perintah cordova clean

Merbin Joe
sumber