Không thể thực thi dex: Nhiều tệp dex xác định


125

Tôi biết câu hỏi này đã được hỏi ở đây một vài lần trước đây. Nhưng tôi chưa thấy giải pháp nào khả thi cả. Trước khi tôi thực hiện dự án 'Chạy như ứng dụng Android', nếu tôi không xóa nó, tôi sẽ gặp lỗi sau và phải khởi động lại Eclipse ... và làm sạch lại.

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

com.jstun.core ... là một phần của thư mục src của tôi, tất nhiên tôi không thể xóa nó. Và ngay cả khi tôi gỡ bỏ gói đó, một gói khác sẽ xuất hiện dưới dạng lỗi như:

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

Tôi đã thấy lỗi này kể từ khi cập nhật lên ADT 15, tôi đang sử dụng Eclipse Galileo trên Ubuntu Bạn có ý kiến ​​gì không? Cảm ơn cho bất kỳ trả lời!


Tôi đã thử hầu hết mọi thứ trong chủ đề này nhưng nó không hoạt động. Tôi đã giải quyết vấn đề bằng cách xóa dự án sau đó tạo một dự án mới và sao chép các tệp nguồn từ bản sao lưu.
linuxjava 7/07/2015


Nhìn vào câu trả lời của tôi tại liên kết sau đây. stackoverflow.com/a/38391449/3702595
Sattar Hummatli

Câu trả lời:


136

Đây là một vấn đề đường dẫn xây dựng.

  • Đảm bảo thư mục bin của bạn không được bao gồm trong đường dẫn xây dựng của bạn.

  • Nhấp chuột phải vào dự án của bạn -> đi đến thuộc tính -> Xây dựng đường dẫn.

  • Đảm bảo rằng thư viện Honeycomb nằm trong libs/thư mục của bạn chứ không phải trong thư mục nguồn của bạn.

  • Bao gồm các thư viện libs/riêng lẻ trong đường dẫn xây dựng.

    BTW, bạn có thể muốn mang vào android-support-v4thư viện để nhận hỗ trợ Ice Cream Sandwich thay vì thư viện hỗ trợ Honeycomb.


50
Vấn đề này cũng xảy ra nếu bạn có nhiều phiên bản thư viện được bao gồm trong đường dẫn xây dựng của bạn. Loại bỏ các thư viện không sử dụng khỏi libsđường dẫn, dọn dẹp và lưu dự án, khởi động lại Eclipse và biên dịch lại nó làm việc cho tôi.
Aryo

Không bao gồm thư mục bin từ đường dẫn xây dựng đã giải quyết nó cho tôi. Cảm ơn!
alekop

2
Nguyên nhân cốt lõi của vấn đề là một trong những thư viện đã sử dụng thư viện ninoldandroid như một cái hũ được lưu trữ trong thư mục ./libs, trong khi một dự án khác đang sử dụng ninoldandroid bằng cách tham khảo nó
Deepika Lalra

Điều này cũng có thể xảy ra khi bạn có một cái gì đó giống như Foo.javatrong một gói và Foo.javatrong một cái lọlibs/
lừa đảo

Lỗi / lỗi này xảy ra khi thư mục dự án của bạn nằm trong Google Drive. Tôi đoán nó lỗi khi bao giờ Drive đồng bộ hóa. Ít nhất là đối với tôi
ymerdrengene

58

Tôi đã gặp một lỗi tương tự ngày hôm nay và lý do là thư viện hỗ trợ được tham chiếu bởi hai dự án thư viện được sử dụng bởi dự án ứng dụng của tôi nhưng với các phiên bản khác nhau.

Chi tiết hơn: Ứng dụng của tôi phụ thuộc vào 2 dự án thư viện

  • FaceBookSDK 3.0 -> đang tham khảo android-support-v4
  • ActionBarSherlock -> đang tham khảo android-support-v4 nhưng với phiên bản sửa đổi để hỗ trợ bản đồ.

Để giải quyết vấn đề, tôi đã phải tạo thư viện FaceBookSDK phụ thuộc vào thư viện ABS thay vì thư viện hỗ trợ trực tiếp.


Vâng, vấn đề của tôi là tương tự. Hai thư viện có thư viện httpmime, vì vậy tôi đã xóa một và làm cho nó trỏ đến dự án khác.
Matt

10
bất cứ ai trong số các bạn có thể giải thích chính xác làm thế nào bạn đã làm điều đó?
Samih A

3
@samih trong ví dụ tôi đã đề cập, đầu tiên tôi đã xóa jar android-support-v4 khỏi thư mục lib của dự án FaceBookSDK và đường dẫn xây dựng. Sau đó, tôi đã thêm tham chiếu đến dự án thư viện ActionBarSherlock.
M.Sameer

đối với tôi, hóa ra một nhà phát triển khác đã thêm một phiên bản mới của tệp jar thư viện mà không xóa cái cũ. Vì vậy, có hai lọ với cùng một lớp. Do đó, lỗi 'Nhiều tệp dex ...' Bạn có thể thực hiện grep -r 'OffendingClassName' | grep jar $ để tìm kiếm các tệp jar chứa tên lớp.
bibstha

Tương tự, nhưng tôi đã vô tình thêm android-support-v4.jarvào cả đường dẫn xây dựng Eclipse của mình và thêm nó thủ công vào libsthư mục mà tôi đã tạo. Do các tham chiếu trùng lặp, tôi không thể biên dịch (và nhận được thông báo lỗi mà OP nhận được). Tôi đã xóa libsthư mục tôi tạo một cách ngu ngốc và mọi thứ đều hoạt động. Cảm ơn đã gợi ý.
kurtzbot

47

Đối với tôi, tôi đã xóa tệp trong thư mục libs có tên là android hỗ trợ v4.jar và tất cả đều hoạt động. Chúc may mắn :)


1
Đối với tôi đó là một tập tin android hỗ trợ v4.jar (1). Tôi vừa gỡ bỏ nó, và làm sạch dự án!
ymerdrengene

33

Tôi đã có một lỗi tương tự xảy ra và mỗi lần tôi sửa nó, nó sẽ quay trở lại sau khi tôi khởi động lại Eclipse.

Trước hết, như những người khác đã nói, hãy đảm bảo bạn không có nhiều bản sao của cùng một tệp .jar xung quanh các dự án của bạn.

Trong trường hợp của tôi, tôi đã có một dự án chính sử dụng ActionBarSherlock (trong số các dự án thư viện khác). Thủ thuật làm việc cho tôi là đi vào ActionBarSherlock --> Properties --> Java Build path --> Order of Exportvà bỏ chọn Android Private Libraries. Sau đó đi vào Project -> Cleanvà bây giờ bạn sẽ có thể xây dựng dự án một cách chính xác.

Bây giờ, vì một số lý do, mỗi khi tôi khởi động lại Eclipse, nó sẽ tự động kích hoạt hộp kiểm đó, vì vậy tôi phải lặp lại quy trình này một lần nữa.

Hy vọng điều này sẽ giúp một số linh hồn bị mất ngoài kia :)


32

Chuyển đến Dự án / thuộc tính và Đường dẫn được xây dựng Java và bỏ chọn Thư viện riêng của Android


1
Đã sửa lỗi của tôi!
Totic

Nhưng nó dừng gcm.jar để hoạt động, làm thế nào để nó hoạt động mà không gặp lỗi này?
Narendra Singh

Tôi đã gặp lỗi: nhiều dex Lcom / google / android / gms / analytics / Internal / Command $ 1. Tôi đã nhận được điều này sau khi nâng cấp google play lên 22.1.1. Bỏ chọn Thư viện riêng trong dự án google play đã xóa lỗi
eugene

Bạn đã cứu cuộc đời tôi! Thx ~
Leo Hsieh

15

Đối với tôi, chỉ cần đi đến Thuộc tính dự án >> Đường dẫn xây dựng Java >> Đặt hàng và xuất. Bỏ chọn tất cả các thư viện bên ngoài, như hình ảnh dưới đây. Nó làm việc cho tôi. Hy vọng điều này giúp đỡ.

Thuộc tính dự án


đó là vấn đề đối với tôi
Piyush-Hỏi bất kỳ sự khác biệt nào vào

8

Tôi cũng đã phải đối mặt với vấn đề này trong dự án của tôi. AVD không thể tải lại bối cảnh thư mục tài sản, lib, res và vv. vấn đề: Trình tải Dex] Không thể thực thi dex: Nhiều tệp dex xác định Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl.

Sau đó, tôi tạo các dự án mới và sao chép MainActivity.java, activity_main.xmlbối cảnh có thể vẽ được. Sau đó xóa dự án cũ khỏi gói khám phá, khởi động lại Eclipse và AVD của bạn. Dự án của tôi hiện đang hoạt động tốt .... :) Tôi hy vọng các bước này sẽ giúp ích cho mọi người một chút .. !!


8

Tôi có cùng một vấn đề, những gì tôi đã cố gắng là:

  1. Danh sách mục
  2. Mở đường dẫn xây dựng dự án,
  3. Chọn tab "Thư viện",
  4. Xóa tất cả thư viện ngoại trừ Thư viện Android
  5. Thêm tất cả các tệp JAR cần thiết,
  6. Và thực hiện!

Nó làm việc cho tôi, cảm ơn.


Vâng, tôi chỉ làm như vậy. loại bỏ tất cả các tập tin jar, thêm lại. theo thứ tự và xuất, bỏ chọn các phụ thuộc và kiểm tra tất cả các thư viện được thêm ngay bây giờ
Maulik Sheth

6

Nếu một số bạn gặp phải vấn đề này với plugin facebook-Connent cho phonegap

cố gắng xóa các tập tin trong thư mục bin / class / com / facebook / android! -> và xây dựng lại


Đây là câu trả lời đúng. Giải thích là ---- facebook.android được bao gồm hai lần. Một lần vào facebookSDK.jar được bao gồm trong dự án của bạn và một khi các tệp java được bao gồm trực tiếp trong dự án của bạn. loại bỏ nó khỏi dự án của bạn là cách sạch sẽ để làm điều đó. tất cả các câu trả lời khác chỉ là những câu hỏi xung quanh sẽ không xuất ra định nghĩa hay gì đó ....
Sandeep Taneja

6

Như những người khác đã đề cập, điều này xảy ra khi bạn có nhiều bản sao của cùng một lớp trong đường dẫn xây dựng của bạn hoặc ở nơi khác trong thiết lập của bạn.

Tôi đã thêm android-support-v4.jar vào thư mục libs / của mình và bằng cách nào đó nhật thực đã thêm một bản sao thứ hai vào bin / class / android-support-v4.jar.

Bạn có thể kiểm tra điều này với

grep -r Your OfferendingClassName YourApp | bình grep

Việc xóa bản sao bổ sung trong bin / class đã giải quyết được vấn đề - không chắc tại sao Eclipse lại tạo một bản sao ở đó.


1
Tôi đã thử tất cả các tùy chọn khác được liệt kê ở đây, nhưng đây là lựa chọn đã giải quyết nó cho tôi! :) Và vâng, Eclipse sẽ chết và Android Studio sẽ có phiên bản 1.0 - thế giới sẽ trở thành một nơi tốt hơn.
Johan Paul

5

Tôi đã nhận lỗi này vì một lý do khác. Tôi đã nhầm lẫn khi thêm cả thư viện hỗ trợ v4 VÀ v13. Điều này là không cần thiết đối với tôi vì minSdkVersion của tôi là 15.

Tôi đã sửa nó bằng cách chỉ bao gồm thư viện hỗ trợ v13. Ngoài ra, hãy đảm bảo kiểm tra đánh dấu thư viện trong đường dẫn xây dựng thư viện đã xuất của bạn trong nhật thực. Tôi cũng đã di chuyển nó lên đầu.


Đây là những gì đã cho tôi là tốt. Thư viện hỗ trợ v13 bao gồm thư viện hỗ trợ v4, vì vậy dex đã hiển thị nhiều khai báo lớp.
Kyle Falconer

4

Ngay cả sau khi trải qua nhiều câu trả lời, không có giải pháp nào hiệu quả với tôi.

Tôi đã xóa "Phụ thuộc Android" khỏi đường dẫn xây dựng. Đã thêm tất cả các tệp jar một lần nữa vào đường dẫn xây dựng và lỗi đã biến mất. Bằng cách nào đó nhật thực dường như để lưu trữ những thứ.


3

Tôi sẽ để lại câu trả lời này cho một người gặp phải tình huống này như tôi đã làm.

Tôi tình cờ ở đây và ở đó trước khi nhận thấy rằng tôi đã kéo nhầm và thả tệp JAR của Thư viện hỗ trợ vào thư mục src của mình và nó đang nằm ở đó. Vì tôi không biết nó đã xảy ra như thế nào hoặc khi tôi đánh rơi nó ở đó, tôi không bao giờ có thể tưởng tượng được có gì đó không ổn ở đó.

Tôi đã nhận được cùng một lỗi, đôi khi tôi đã tìm thấy vấn đề và loại bỏ nó. Dự án hiện đang hoạt động tốt.


3

Giải pháp cho tôi chỉ là làm những việc sau:

  1. -> thư mục lib trong dự án của bạn và xóa bất kỳ yếu tố nào.
  2. Project-> Properties-> Java build Path và xóa bất kỳ Thư viện phụ thuộc nào được bạn tự động thêm vào chứ không phải bạn! -> Áp dụng
  3. Khởi động lại IDE Eclipse
  4. Bây giờ làm sạch dự án.
  5. Chạy / Gỡ lỗi trên thiết bị / Trình giả lập dự án ... Chúc may mắn

vấn đề vẫn còn tồn tại
Akhil Jain

2

Vấn đề của tôi lúc đầu là:

Không thể thực thi dex: java.nio.BufferOverflowException. Kiểm tra nhật ký Eclipse để theo dõi ngăn xếp.

1) Tôi nhấp chuột phải vào dự án của tôi -> Công cụ Android -> Thêm thư viện hỗ trợ (Chạy ứng dụng của tôi ... Không hoạt động nên tôi tiếp tục ...) 2) Nhấp chuột phải vào dự án của tôi một lần nữa -> Thuộc tính -> Android -> Kiểm tra Android 4.1.2 (16) trên Project Build Target (Chạy lại ứng dụng ... và nhận thông tin này:

Không thể thực thi dex: Nhiều tệp dex xác định Landroid / support / v4 / app / BackStackState;

3) Vì vậy, tôi đã đi đến thư mục "lib" về dự án của tôi và xóa các "cũ" Android.support.library.jar (Chạy các ứng dụng và các ngón tay chéo và ...)

CÔNG TRÌNH NÓ!

Hy vọng nó sẽ giúp được ai đó ... Cảm ơn mọi người!


2

Tôi đã gặp vấn đề này và điều đó không có nghĩa là cùng một thư viện được tải nhiều lần nhưng Hệ thống đang cố gắng tải một lớp có cùng tên và có thể cùng một tên gói, nghĩa là

  • com.pack1.deClass Geometrycủalibrary1.jar

và cái khác

  • com.pack1.deClass Geometrycủalibrary2.jar.

Bạn nên tiếp cận như thế nào? Bạn nên phân tích phương thức nào đang được sử dụng, phương thức library1.jar hoặc library2.

Có 2 giải pháp,

  1. Đổi tên một packagename và sau đó diễn giải dalvik, rằng chúng là các lớp riêng biệt
  2. Hoặc nếu bạn muốn mạo hiểm, hãy thanh lọc lớp không chứa methode mà chúng ta thực sự sử dụng.

Tôi hy vọng rằng đã làm rõ câu hỏi thường gặp này.


2

Tôi đã loại bỏ các phụ thuộc Android khỏi đường dẫn xây dựng và nó đã hoạt động.


1

Lỗi này xảy ra với tôi khi trong dự án ứng dụng của tôi, tôi đã tham chiếu một dự án Thư viện trong không gian làm việc Eclipse của tôi (trong trường hợp của tôi là SDK Facebook) và đồng thời bao gồm SDK Facebook như một tệp trong thư mục libs. Xóa tham chiếu thư viện nhưng giữ jar trong thư mục libs đã xóa lỗi.


1

Tôi đã có vấn đề tương tự. Tôi đã phải xóa các .apktập tin và sau đó nó làm việc.


1

Đối với tôi, tôi đã xóa android-support-v4.jar khỏi thư mục lib và cũng xóa khỏi đường dẫn xây dựng.


Xin chào Rạch, chào mừng bạn đến với Stackoverflow. Câu trả lời của bạn được gắn cờ là chất lượng thấp vì độ dài và nội dung của nó. Khi trả lời câu hỏi, vui lòng cung cấp mô tả bổ sung về cách giải quyết vấn đề. Nó sẽ giúp đỡ người khác và mang lại cho bạn danh tiếng :)
siêu anh hùng

1
  • Nhấp chuột phải vào dự án và đi đến build Path>configuration build path
  • Chọn tab thư viện và bấm vào support-v4 library và nhấp vào loại bỏ
  • Bấm vào OK

và sau đó làm sạch dự án của bạn và chạy nó sẽ hoạt động :-)


0

Trong trường hợp bất cứ ai khác đập đầu vào vấn đề này như tôi vừa làm:

Trường hợp của tôi liên quan đến một chuỗi các dự án thư viện. Đơn giản chỉ cần thực hiện một dự án sạch trên tất cả các thư viện đã sửa mọi thứ


0

Tôi tìm thấy giải pháp dưới đây trong nhật thực ... hy vọng nó hiệu quả với bạn :)

Right click on the Project Name

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

Unchecked your .jar library's

0

Vấn đề này xảy ra khi cùng một thư viện được thêm vào dự án của bạn nhiều lần. Nếu bạn chưa thêm thư viện nhiều lần, hãy kiểm tra thư viện phụ thuộc / thư viện riêng của các thư viện bạn đã thêm vào dự án của mình, rất có thể chúng đã bao gồm một thư viện gây ra xung đột này.


0

Tôi cũng đã đấu tranh để tìm thấy đây là vấn đề. Trong trường hợp của tôi, những gì đã xảy ra trong khi sao chép apk vào email (kéo thả) - do nhầm lẫn apk đã được dán trong thư mục src trong một trong các gói. Sau khi gỡ apk khỏi thư mục nguồn, nó hoạt động tốt.


0

Tôi gặp vấn đề này ở Intellij và đó là do thư viện ActionBarSherlock mà tôi đã thêm vào dự án của mình đã xác định android-support-v4.jar là một phụ thuộc biên dịch và jar này đã được đưa vào dự án của tôi nên có nhiều bản sao / phiên bản DEX tại thời gian biên dịch.

Giải pháp là thay đổi phụ thuộc mô-đun ActionBarSherlock cho jar này thành Runtime thay vì biên dịch, vì dự án của tôi đã cung cấp nó.


0

Đối với tôi, vấn đề là ở chỗ, tôi đã thêm một dự án lib (autobahn lib) trước đó và sau đó chuyển tệp Jar sang cùng thư viện. Tôi đã xóa các tham chiếu đến dự án thư viện cũ hơn, tôi đã gặp lỗi này. Theo tất cả các câu trả lời ở đây, tôi đã kiểm tra đường dẫn xây dựng, v.v. Nhưng tôi đã không thêm các lib này để xây dựng đường dẫn thủ công. Vì vậy, tôi không có gì để loại bỏ. Cuối cùng đã đi qua thư mục này.

bin / dexedLibs

Tôi nhận thấy rằng có hai tệp jar có cùng tên tương ứng với autobahn Android đang gây ra xung đột. Vì vậy, tôi đã xóa tất cả các tệp jar trong thư mục dexedLibs và xây dựng lại dự án. Điều đó đã giải quyết vấn đề.


0

Để thêm vô số các nguồn tiềm năng khác ... Tôi đã cập nhật tất cả các thư viện trong libthư mục dự án của mình nhưng sau đó Eclipse "cài đặt lại một cách hữu ích tất cả các thư viện gốc. Không còn bất kỳ tài liệu tham khảo nào trong Eclipse cho các thư viện này, nhưng chương trình tạo dex bên ngoài chỉ lấy tất cả các tệp trong libthư mục và do đó có hai phiên bản của một số .jartệp thư viện .

git statusđã xác định các tệp mới và git clean -floại bỏ chúng cho tôi (mặc dù đôi khi tôi phải đợi hoặc khởi động lại Eclipse trên Windows vì nó vẫn mở các tệp từ bản sao).


0

Giải pháp đơn giản và tốt nhất của ULTRA:

Xóa mọi thứ trong Nhấp chuột phải vào Thư mục của Dự án chính -> Thuộc tính -> Đường dẫn xây dựng Java ngoại trừ Android XY (trong đó XY là phiên bản trong Android). Làm sạch và xây dựng. Làm xong!

Hãy chắc chắn trước đó để có một android-support-v4.jar.


0

Nếu bạn đang sử dụng cordova, hãy thử lệnh cordova clean

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.