Dex yürütülemiyor: Birden fazla dex dosyası tanımlayın


125

Bu sorunun burada daha önce birkaç kez sorulduğunu biliyorum. Ama henüz olası bir çözüm görmedim. 'Android Uygulaması Olarak Çalıştır' projesini yapmadan önce, eğer temizlemiyorsam aşağıdaki hatayı alıyorum ve Eclipse'i yeniden başlatmam gerekiyor ... ve tekrar temizlemem gerekiyor.

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

com.jstun.core ... src klasörümün bir parçası, elbette kaldıramıyorum. Ve bu paketi kaldırsam bile, başka bir paket aşağıdaki gibi bir hata olarak görünecektir:

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

ADT 15'e güncellemeden beri bu hatayı gördüm, Ubuntu'da Eclipse Galileo kullanıyorum Herhangi bir fikriniz var mı? Herhangi bir cevap için teşekkürler!


Bu konudaki neredeyse her şeyi denedim ama işe yaramadı. Projeyi silerek ve ardından yeni bir tane oluşturarak ve kaynak dosyaları yedekten yapıştırarak kopyalayarak sorunu çözdüm.
linuxjava


Aşağıdaki bağlantıdaki cevabıma bakın. stackoverflow.com/a/38391449/3702595
Sattar Hummatli

Yanıtlar:


136

Bu bir yol oluşturma sorunudur.

  • Bin klasörünüzün oluşturma yolunuza dahil edilmediğinden emin olun.

  • Projenize sağ tıklayın -> özelliklere gidin -> Yol Oluştur.

  • Honeycomb kitaplığının libs/kaynak klasörünüzde değil , klasörünüzde olduğundan emin olun .

  • Kitaplıkları libs/derleme yoluna ayrı ayrı ekleyin .

    BTW, android-support-v4Honeycomb destek kitaplığı yerine Ice Cream Sandwich desteği almak için kitaplığı getirmek isteyebilirsiniz .


50
Bu sorun, fiziksel olarak derleme yolunuzda birden çok kitaplık sürümüne sahipseniz de ortaya çıktı. Kullanılmayan kitaplıkları libsyoldan kaldırmak, projeyi temizlemek ve kaydetmek, Eclipse'i yeniden başlatmak ve yeniden derlemek, benim için çalışmayı tekrar yap.
Aryo

Bin klasörünü yapı yolundan hariç tutmak benim için çözdü. Teşekkürler!
alekop

2
Sorunun temel nedeni, kütüphanelerden birinin nineoldandroid kütüphanesini ./libs dizininde saklanan kavanoz olarak kullanıyor olması, diğer bir projenin ise buna atıfta bulunarak nineoldandroid kullanmasıydı
Deepika Lalra

Bu aynı zamanda Foo.javabir pakette ve Foo.javakavanozda olduğu gibi bir şey olduğunda da olabilirlibs/
tricknology

Bu hata / hata, proje klasörünüz Google Drive'da olduğunda ortaya çıkar. Sanırım Drive her zaman senkronize edildiğinde hata veriyor. En azından benim için
ymerdrengene

58

Bugün benzer bir hatayla karşılaştım ve bunun nedeni, destek kitaplığına, uygulama projem tarafından kullanılan ancak farklı sürümleri olan iki kitaplık projesi tarafından referans gösterilmesiydi.

Daha ayrıntılı olarak: Uygulamam 2 kitaplık projesine bağlı

  • FaceBookSDK 3.0 -> android-support-v4'e atıfta bulunuyor
  • ActionBarSherlock -> android-support-v4'e atıfta bulunur, ancak haritaları desteklemek için değiştirilmiş bir sürümü vardır.

Sorunu çözmek için FaceBookSDK kitaplığını doğrudan destek kitaplığı yerine ABS kitaplığına bağlı hale getirmem gerekiyordu.


Evet, sorunum benzerdi. İki kütüphanede httpmime kütüphanesi vardı, bu yüzden birini kaldırdım ve diğer projeyi işaret ettim.
Matt

10
Herhangi biriniz tam olarak nasıl yaptığınızı açıklayabilir mi?
Samih A

3
@samih bahsettiğim örnekte, önce android-support-v4 jar dosyasını FaceBookSDK proje lib klasöründen kaldırdım ve yolu oluşturdum. Daha sonra ActionBarSherlock kütüphane projesine referans ekledim.
M.Sameer

Benim için başka bir geliştirici, eskisini silmeden bir kitaplık jar dosyasının yeni bir sürümünü ekledi. Yani aynı sınıfta iki kavanoz vardı. Böylece 'Çoklu dex dosyaları ...' hatası grep -r 'OffendingClassName' yapabilirsiniz | sınıf adını içeren jar dosyalarını aramak için grep jar $.
bibstha

Benzer, ancak yanlışlıkla android-support-v4.jarEclipse oluşturma yoluma ve libsoluşturduğum klasöre manuel olarak ekledim . Yinelenen referanslar nedeniyle derleyemedim (ve OP'nin aldığı hata mesajını aldım). libsAptalca oluşturduğum klasörü sildim ve her şey çalıştı. İpucu için teşekkürler.
kurtzbot

47

Benim için, libs klasöründeki android support v4.jar adlı dosyayı sildim ve her şey yolunda gitti. İyi şanslar :)


1
Benim için android support v4.jar (1) .jar dosyasıydı. Az önce kaldırdım ve projeyi temizledim!
ymerdrengene

33

Aynı hatayı yaşadım ve her düzelttiğimde, Eclipse'i yeniden başlattıktan sonra geri geliyordu.

Öncelikle, diğer insanların dediği gibi, projelerinizin etrafında aynı .jar dosyasının birden fazla kopyasına sahip olmadığınızdan emin olun.

Benim durumumda, ActionBarSherlock'u kullanan bir ana projem vardı (diğer kütüphane projelerinin yanı sıra). Benim için işe yarayan numara girip ActionBarSherlock --> Properties --> Java Build path --> Order of Exportseçimi kaldırmaktı Android Private Libraries. Sonra içine Project -> Cleangirip şimdi projeyi doğru bir şekilde inşa edebilmelisiniz.

Şimdi, bazı nedenlerden dolayı, Eclipse'i her yeniden başlattığımda, bu onay kutusunu otomatik olarak etkinleştiriyor, bu yüzden bu işlemi tekrar etmem gerekiyor.

Umarım bu, bazı kayıp ruhlara yardımcı olur :)


32

Proje / mülklere ve Java Yerleşik Yoluna gidin ve Android Özel Kitaplıklarının işaretini kaldırın


1
Benim sorunum da düzeltildi!
Totic

Ancak gcm.jar'ın çalışmasını durdurması, bu hata olmadan çalışmasını nasıl sağlayabilir?
Narendra Singh

Hata aldım: birden çok dex Lcom / google / android / gms / analytics / internal / Command $ 1. Bunu google play'i 22.1.1'e yükselttikten sonra aldım. Google Play projesinde Özel Kitaplıkların seçiminin kaldırılması hatayı kaldırdı
eugene

Hayatımı kurtardın! Thx ~
Leo Hsieh

15

Benim için, Proje Özellikleri >> Java Derleme Yolu >> Sipariş ve Dışa Aktar'a gidin. Aşağıdaki görüntüde olduğu gibi tüm harici kitaplığın işaretini kaldırın. Benim için çalışıyor. Umarım bu yardımcı olur.

Proje Özellikleri


bu benim için sorun oldu
Piyush-Sor Any Difference

8

Projemde de bu sorunla karşılaştım. AVD varlıkları, kitaplık, res ve vb. Klasör bağlamlarını yeniden yükleyemez. problem: Dex Loader] Dex yürütülemiyor: Birden fazla dex dosyası tanımlayın Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl.

Sonra, ben yeni projeler ve kopyalanan yarattı MainActivity.java, activity_main.xml, çekilebilir bağlamı. Ardından eski projeyi paket keşfetmeden silin, Eclipse ve AVD'nizi yeniden başlatın. Projem artık düzgün çalışıyor .... :) Umarım bu adımlar size biraz yardımcı olur .. !!


8

Aynı sorun var, denediğim şey:

  1. Liste öğesi
  2. Açık Proje Oluşturma Yolu,
  3. "Kitaplıklar" sekmesini seçin,
  4. Android Kitaplığı dışındaki tüm kitaplığı kaldır
  5. Gerekli tüm JARs Dosyalarını eklemek,
  6. Ve bitti!

Benim için çalışıyor, teşekkürler.


evet, ben de aynısını yaptım. tüm jar dosyaları kaldırıldı, geri eklendi. sırayla ve dışa aktarmada, denetlenmemiş bağımlılıklar ve şimdi eklenen tüm kitaplıklar kontrol edildi
Maulik Sheth

6

Bazılarınız phonegap için facebook-connent-eklentisi ile bu sorunla karşı karşıyaysa

bin / class / com / facebook / android dizinindeki dosyaları kaldırmayı deneyin! -> ve yeniden inşa et


Bu doğru cevap. Açıklama ---- facebook.android iki kez dahil edilmiştir. Bir kez projenize dahil olan facebookSDK.jar'da ve bir kez java dosyaları doğrudan projenize dahil edildiğinde. onu projenizden kaldırmak, bunu yapmanın temiz yoludur. diğer tüm yanıtlar, tanımı veya başka bir şeyi dışa aktarmayacak geçici çözümlerdir ....
Sandeep Taneja

6

Diğerlerinde belirtildiği gibi, bu, oluşturma yolunuzda veya kurulumunuzun başka bir yerinde aynı sınıfın birden çok kopyasına sahip olduğunuzda gerçekleşir.

Android-support-v4.jar dosyasını libs / klasörüme ekledim ve bir şekilde eclipse, bin / classes / android-support-v4.jar'a ikinci bir kopya ekledi.

Bunun için test edebilirsiniz

grep -r YourOffendingClassName Uygulamanız | grep kavanozu

Çöp kutusu / sınıflardaki fazladan kopyayı silmek sorunu çözdü - Eclipse'in oraya neden bir kopya yaptığından emin değil.


1
Burada listelenen diğer tüm seçenekleri denedim, ancak bu benim için çözen oydu! :) Ve evet, Eclipse ölmeli ve Android Studio 1.0 sürümünü almalı - o zaman dünya daha iyi bir yer olurdu.
Johan Paul

5

Bu hatayı başka bir nedenle aldım. Hem v4 hem de v13 destek kitaplığını eklerken hata yapıyordum. MinSdkVersion 15 olduğu için bu benim için gerekli değildi.

Yalnızca v13 destek kitaplığını ekleyerek düzelttim . Ayrıca, tutulmada dışa aktarılan kitaplık oluşturma yolunuzdaki kitaplığı işaretlediğinizden emin olun. Ben de zirveye taşıdım.


Beni de getiren şey buydu. V13 destek kitaplığı v4 destek kitaplığını içerir , bu nedenle dex birden çok sınıf bildirimini gösteriyordu.
Kyle Falconer

4

Birden fazla yanıttan geçtikten sonra bile benim için hiçbir çözüm işe yaramadı.

Derleme yolundan "Android Bağımlılıklarını" sildim. Tüm jar dosyalarını yeniden oluşturma yoluna eklendi ve hata ortadan kalktı. Her nasılsa tutulma olayları önbelleğe alıyor gibiydi.


3

Bu yanıtı benim gibi bu senaryoya giren biri için bırakıyorum.

Destek Kitaplığı JAR dosyasını yanlışlıkla src klasörüme sürükleyip bıraktığımı ve orada yattığını fark etmeden önce burada ve orada tökezledim. Nasıl olduğu hakkında hiçbir fikrim olmadığından veya oraya düşürdüğümde, orada bir şeylerin ters gittiğini asla hayal edemezdim.

Aynı hatayı alıyordum, bir süre sonra sorunu buldum ve kaldırdım. Proje şimdi iyi çalışıyor.


3

Benim için Çözüm sadece aşağıdakileri yapmaktı:

  1. -> projenizdeki lib dizini ve birden çok öğeyi silin.
  2. Proje-> Özellikler-> Java yolu oluşturun ve sizin tarafınızdan değil otomatik olarak eklenen Bağımlılık Kitaplığını silin! -> uygula
  3. Eclipse IDE'yi yeniden başlatın
  4. Şimdi projeyi temizleyin.
  5. Projeyi Aygıt / Emülatörde Çalıştır / Hata Ayıkla ...

sorun hala devam ediyor
Akhil Jain

2

İlk başta sorunum şuydu:

Dex yürütülemiyor: java.nio.BufferOverflowException. Yığın izleme için Eclipse günlüğünü kontrol edin.

1) Projeme sağ tıklıyorum -> Android Araçları -> Destek Kitaplığı Ekle (Uygulamamı çalıştır ... Çalışmadı, bu yüzden devam ettiriyorum ...) 2) Projeme tekrar sağ tıklayın -> Özellikler -> Android -> Project Build Target'ta Android 4.1.2'yi (16) kontrol edin (Uygulamayı tekrar çalıştırın ... ve şunu alın:

Dex yürütülemiyor: Birden fazla dex dosyası Landroid / support / v4 / app / BackStackState'i tanımlar;

3) Ben gittim "lib" klasöründe Projemde ve silme "eski" Android.support.library.jar ) ... (çalıştır uygulaması ve çapraz parmakları ve

İŞE YARIYOR!

Umarım birine yardımcı olur ... Teşekkürler millet!


2

Bu sorunu yaşadım ve bu, aynı kitaplığın birçok kez yüklendiği anlamına gelmez, ancak Sistem aynı ada ve muhtemelen aynı paket adına sahip bir sınıfı aynı anda yüklemeye çalışıyor, yani

  • com.pack1.deve Class Geometrybirlibrary1.jar

ve başka

  • com.pack1.deve Class Geometrybirlibrary2.jar.

Nasıl yaklaşmalısınız? Hangi yöntemlerin kullanıldığını, bir library1.jar veya library2 yöntemini analiz etmelisiniz.

2 Çözüm var,

  1. Bir paket adını yeniden adlandırın ve ardından dalvik, bunların ayrı sınıflar olduğunu yorumlar
  2. Ya da risk almak istiyorsanız, gerçekten kullandığımız yöntemi içermeyen sınıfı temizleyin.

Umarım bu, sık sorulan bu soruyu açıklığa kavuşturmuştur.


2

Android bağımlılıklarını derleme yolundan kaldırdım ve işe yaradı.


1

Bu hata, uygulamamın projesinde Eclipse çalışma alanımda (benim durumumda Facebook SDK) bir Kitaplık projesine başvurduğumda ve aynı zamanda Facebook SDK'yı libs klasörüne bir kavanoz olarak dahil ettiğimde başıma geldi . Kitaplık referansının kaldırılması, ancak jar'in libs klasöründe tutulması hatayı ortadan kaldırdı.


1

Benim de aynı problemim vardı. .apkDosyayı silmek zorunda kaldım ve sonra çalıştı.


1

Benim için android-support-v4.jar dosyasını lib klasöründen sildim ve ayrıca yapı yolundan kaldırdım.


Merhaba Rach, Stackoverflow'a hoş geldiniz. Cevabınız, uzunluğu ve içeriği nedeniyle düşük kaliteli olarak işaretlendi. Soruları yanıtlarken, lütfen sorunun nasıl çözüleceğine ilişkin ek açıklama sağlayın. Başkalarına yardım edecek ve size itibar kazandıracak :)
superhero

1
  • Projeye sağ tıklayın ve gidin build Path>configuration build path
  • Kitaplık sekmesini seçin ve tıklayın support-v4 library ve kaldır'a tıklayın
  • Tamam'a tıklayın

ve sonra projenizi temizleyin ve çalıştırın çalışacaktır :-)


0

Az önce yaptığım gibi bu konuda başka birinin kafasını çarpması durumunda:

Benim durumum bir dizi kütüphane projesi içeriyordu. Tüm kütüphanelerde bir proje temizliği yapmak her şeyi düzeltti


0

Tutulmada aşağıdaki çözümü buldum ... umarım sizin için çalışır :)

Right click on the Project Name

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

Unchecked your .jar library's

0

Bu sorun, aynı kitaplık projenize birden çok kez eklendiğinde ortaya çıkar. Kitaplığı kasıtlı olarak birden çok kez eklemediyseniz, projenize eklediğiniz kitaplıkların bağımlılık / özel kitaplıklarına bakın, büyük olasılıkla zaten bu çatışmaya neden olan bir kitaplık dahil etmişlerdir.


0

Ben de bunun sorun olduğunu bulmakta zorlanıyordum. Benim durumumda olan şey, apk'yi e-postaya kopyalarken (sürükle bırak) - yanlışlıkla apk, paketlerden birinde src klasörüne yapıştırıldı. Apk'yi kaynak klasörden kaldırdıktan sonra iyi çalıştı.


0

Intellij'de bu sorunu yaşadım ve bunun nedeni, projeme eklediğim ActionBarSherlock kitaplığının android-support-v4.jar'ı bir derleme bağımlılığı olarak tanımlamasıydı ve bu jar zaten projeme dahil edilmişti, dolayısıyla DEX'in birden fazla kopyası / sürümü vardı. Derleme zamanı.

Çözüm, bu jar için ActionBarSherlock modül bağımlılığını, projem zaten sağladığından, derleme yerine Runtime olacak şekilde değiştirmekti.


0

Benim için sorun, daha önce bir lib projesi (autobahn lib) ekledim ve daha sonra aynı kütüphanenin Jar dosyasına geçtim. Eski kütüphane projesine referansları kaldırmış olsam da bu hatayı alıyordum. Buradaki tüm cevapları takiben, oluşturma yolunu vb. Kontrol ettim. Ancak yolu manuel olarak oluşturmak için bu kitaplıkları eklemedim. Bu yüzden çıkaracak hiçbir şeyim yoktu. Sonunda bu klasöre rastladım.

bin / dexedLibs

Çatışmaya neden olan autobahn Android'e karşılık gelen aynı ada sahip iki jar dosyası olduğunu fark ettim. Bu yüzden dexedLibs klasöründeki tüm jar dosyalarını sildim ve projeyi yeniden oluşturdum. Bu sorunu çözdü.


0

Sayısız diğer potansiyel kaynakları eklemek için ... libProjemin klasöründeki tüm kitaplıkları güncelledim ama sonra Eclipse tüm orijinal kitaplıkları "yardımcı bir şekilde" yeniden yükledim. Artık Eclipse içinde bu kitaplıklara herhangi bir referans yoktu, ancak harici dex-maker programı libdizindeki tüm dosyaları yakaladı ve böylece birkaç kitaplık .jardosyasının iki sürümünü aldı .

git statusyeni dosyaları belirledim ve git clean -fbenim için onlardan kurtuldum (gerçi bazen Windows'da Eclipse'i beklemek veya yeniden başlatmak zorunda kaldım çünkü dosyalar kopyadan hala açıktı).


0

ULTRA basit çözüm ve en iyi:

Sağ Tık Ana Projenin Klasörü -> Özellikler -> Android XY hariç Java Derleme Yolu'ndaki her şeyi kaldırın (burada XY, android sürümdür). Temizleyin ve Oluşturun. Bitti!

Bundan önce tek bir android-support-v4.jar'a sahip olduğunuzdan emin olun.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.