Không thể thực thi dex: Nhiều tệp dex xác định mảng Lcom / myapp / R $;


391

Kể từ khi cập nhật lên ADT14 tôi không còn có thể xây dựng dự án của mình. Nó đã được xây dựng tốt trước khi cập nhật.

Lỗi:

[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;

Các vấn đề tương tự đã được báo cáo và tôi đã thử các đề xuất ở đó bao gồm

  • Khởi động lại Eclipse.
  • Dọn dẹp dự án và xây dựng lại - Tắt tùy chọn "Project-> Build Automatic", sau đó "Clean" và "Build", sau đó thử chạy. đặt lại tùy chọn "Build Automatic" thành On
  • Cài đặt lại AndroidCông cụ dành cho nhà phát triển
  • Cài đặt lại Eclipse (được cập nhật lên phiên bản mới nhất 3.7.1)
  • Tạo một dự án mới nhập từ hệ thống tệp
  • Tạo một dự án mới từ lật đổ.

bạn đang làm việc trên windows hay mac .. bởi vì tôi muốn làm theo các câu trả lời sau đây nhưng tôi không chắc liệu họ có làm việc trên mac không .. cảm ơn
McLan

nếu bạn đã nhập dự án thư viện và cũng đã nhập JAR thư viện trong thư mục lib thì bạn phải xóa tệp jar khỏi thư mục lib và cũng từ [Đường dẫn xây dựng -> Cấu hình đường dẫn xây dựng]. Và nó sẽ được làm việc.
Mehul

Nhìn vào câu trả lời của tôi trên đường dẫn sau. stackoverflow.com/a/38391449/3702595
Sattar Hummatli

Câu trả lời:


462

Tôi gặp vấn đề tương tự, khá kỳ lạ vì nó chỉ xảy ra khi sử dụng Eclipse (nhưng nó vẫn ổn với Ant). Đây là cách tôi sửa nó:

  • Nhấp chuột phải vào Project Name
  • Chọn Build Path->Configure Build Path
  • Vào Java Build Path, đi đến tabOrder and Export

  • Bỏ chọn .jarthư viện của bạn

Chỉ đôi khi: Trong tab Thứ tự và Xuất khẩu, tôi không có bất kỳ thư viện jar nào ở đó, vì vậy tôi đã bỏ chọn mục Thư viện riêng của Android. Bây giờ dự án của tôi đang chạy.


Trong dự án của tôi, tôi đã bao gồm thư viện hỗ trợ từ thư mục sdk trong đường dẫn xây dựng của mình và tôi đã có thư viện hỗ trợ trong thư mục "libs" để hỗ trợ xây dựng kiến. Tôi đã bỏ chọn một và nó đã khắc phục vấn đề của tôi.
Chris Feist

20
Thỉnh thoảng giữa lần xây dựng và ra mắt lần trước, một thư viện mới xuất hiện một cách bí ẩn trong dự án của tôi: "Thư viện riêng Android" chứa thư viện hỗ trợ mà tôi đã tham khảo. Vì vậy, "nhiều tập tin dex xác định ____" bí ẩn này đã xuất hiện. Kiểm tra Đường dẫn xây dựng Java và xem mục mới này và bỏ chọn thư viện hỗ trợ bao gồm ban đầu đã giải quyết vấn đề cho tôi.
Tom Pace

9
Cảm ơn rất nhiều. Đây là giải pháp chính xác. Tôi thực sự không biết tại sao nhật thực có nhiều lỗi như vậy. Bây giờ tình hình giống như chỉ 2 giờ tôi có thể viết mã và 6 giờ tôi phải tìm giải pháp cho những vấn đề không cần thiết này.
roy mathew

44
Trong tab Đặt hàng và Xuất khẩu tôi không có bất kỳ thư viện jar nào ở đó, vì vậy tôi có Android Private Librariesmục không được kiểm tra . Bây giờ dự án của tôi đang chạy.
Thiếu niên Mayhé

1
Trong trường hợp của tôi, tôi đã có một dublicate của'android-support-v4.jar'. Khi tôi xóa nó, lỗi đã biến mất
ymerdrengene

94

Vấn đề của tôi đã được giải quyết sau khi dọn sạch một số thư mục và tệp còn sót lại từ các phiên bản trước của công cụ. ADT Rev 14 thay đổi nơi lưu trữ nhị phân . Tôi đã xóa toàn bộ thư mục bin, khởi động lại Eclipse và dọn sạch bản dựng và buộc phải xây dựng lại. Điều đó dường như để thực hiện các mẹo ban đầu nhưng vấn đề đã trở lại sau lần chạy tiếp theo.

Cuối cùng tôi phát hiện ra rằng thư mục bin của tôi đã được đưa vào đường dẫn xây dựng dự án. Tôi loại trừ bin khỏi đường dẫn xây dựng và lặp lại các bước trên. Điều này giải quyết vấn đề của tôi.


42
Google làm cái quái gì thế. Vấn đề này tiếp tục quay trở lại ngay cả với R15.
terry

2
Tôi đã chỉnh sửa giải pháp ở trên để bao gồm độ phân giải cuối cùng. Giải quyết vĩnh viễn ngay bây giờ.
terry

7
Nói tóm lại, không ai thực sự biết tại sao sự cố xảy ra, ý nghĩa của nó và cách khắc phục nó (Tôi không có bất kỳ thư mục bin nào trong Đường dẫn xây dựng Java). Tôi tránh cập nhật lên R15 vì những lý do này, ở lại với R9. Nhưng tôi vẫn gặp một vấn đề tương tự , không có manh mối nào trong tầm nhìn. Bất kỳ lời khuyên hoặc giúp đỡ sẽ được đánh giá rất cao.
Bill Ape

6
@BillTheApe - đồng ý. Điều này là vượt quá bực bội, nó tốn kém.
Tom Redman

@TRedman Cuối cùng tôi cũng giải quyết được vấn đề . Không hiểu tại sao. Đừng cười. LOL +1.
Bill Ape

50

[Giải quyết cho tôi]

Các thuộc tính dự án Eclipse-> Đường dẫn xây dựng Java-> Đặt hàng và xuất

Bỏ chọn thư viện riêng của Android.


4
Không giúp đỡ trong trường hợp của tôi
Redux

1
THANX A LÔ đã giúp tôi
madhu527

46

Không có điều nào ở trên giúp được. Đó là một vấn đề đơn giản cuối cùng.

Tôi đã có một dự án sử dụng FacebookSDK và ViewPagerTheicator làm dự án thư viện. Tất cả được xây dựng trên API Android 16 và hai dự án đó đã sử dụng thư viện hỗ trợ Android vX (X không phải là 16!)

Tôi đã thêm một JAR bên ngoài vào cả hai dự án đó và chỉ nó vào \ extend \ android \ v4 ... Và cũng đã xóa jar v4 tôi có trong các thư mục libs của chúng.

Làm sạch tất cả các dự án và xây dựng lại.

Vani!

Lỗi chính xác tôi đã nhận được: Không thể thực thi dex: Nhiều tệp dex xác định Landroid / support / v4 / view / PagerAd CHƯƠNG; Chuyển đổi sang định dạng Dalvik không thành công: Không thể thực thi dex: Nhiều tệp dex xác định Landroid / support / v4 / view / PagerAd CHƯƠNG;


36

Vấn đề này đã xảy ra với tôi, tôi đã có một .jar bên ngoài trong thư mục libs của mình được gọi là gson-2.2.2.jar nhưng vì một số lý do, có hai trong số đó, gson-2.2.2.jar và gson-2.2.2.jar ( 1), tôi chỉ đơn giản là xóa cái sau và dự án của tôi được xây dựng tốt trở lại.


2
Tôi gặp vấn đề tương tự khi có một tệp jar cũ trong thư mục libs và liên kết nó với một tệp jar mới hơn trong cùng một không gian làm việc. Khi ADT tìm thấy nhiều định nghĩa cho cùng một ký hiệu, nó sẽ báo lỗi như thế này. Xóa tập tin jar cũ trong thư mục libs đã sửa nó cho tôi.
phyatt

Bình bên ngoài là một trong những nguyên nhân của vấn đề và cũng xảy ra như vậy trong trường hợp của tôi. Tôi vừa có một bình còn sót lại trong /libsmột thử nghiệm trước đó, dẫn đến cả Dự án Thư viện và .jar được tạo từ nó. Xóa cái bình đó theo cách /libsgiải quyết vấn đề. +1
ripopenid

31
  1. Đóng nhật thực.
  2. Xóa thư mục bin trong thư mục dự án của bạn.
  3. Bắt đầu nhật thực và làm sạch dự án của bạn.
  4. Bây giờ hãy chạy và vấn đề sẽ biến mất

Câu trả lời của Mateus Viccari đã giải quyết vấn đề của tôi, tôi đã loại bỏ các lib trùng lặp và nó hoạt động như bùa mê ..
swiftBoy

Làm việc cho tôi. Nếu manifest filebị xóa bởi nhật thực khỏi binthư mục, hãy thêm nó thủ công và làm sạch lại dự án.
Mehul Joisar

Làm việc cho tôi. Ngoài ra, hãy đảm bảo rằng bạn không có cùng một .jar ở hai nơi khác nhau (trong trường hợp của tôi, tôi đã có cả trong một dự án thư viện và trong một dự án tham chiếu dự án thư viện đó. Có vẻ như Eclipse chỉ tự động thêm nó vào một số lý do)
Magnus W

Đối với tôi, tôi chỉ cần làm sạch không gian làm việc ENTIRE. Chỉ đơn giản là làm sạch dự án là không đủ. Tôi tin rằng vấn đề của tôi đã xảy ra với việc chuyển một trong các dự án sang "Thư viện" ở giữa một hoạt động sạch
thủ thuật

Không giúp đỡ trong trường hợp của tôi
Redux

26

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 mình - bao gồm bin / trong đường dẫn lớp của bạn là một cách để đảm bảo vấn đề này.

Đối với tôi, điều này xảy ra khi 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.

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 ở đó.

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

grep -r Your OfferendingClassName YourApp | bình grep


23

Đối với tôi, tôi chỉ cần nhấp chuột phải vào dự án -> Xây dựng đường dẫn -> định cấu hình đường dẫn xây dựng -> Thư viện -> xóa phụ thuộc

sau khi nó hoạt động


20

Lỗi này có thể xảy ra nếu bạn có hai lọ chứa cùng tên lớp, ví dụ: tôi có hai thư viện: jsr311-api-1.1.1.jar và jersey-core-1.17.1.jar, cả hai đều chứa lớp javax.ws .rs.Ứng dụngPath. Tôi đã xóa jsr311-api-1.1.1.jar và nó hoạt động tốt.


1
Đây là giải pháp hoàn hảo cho tôi. Tôi đã thêm libs hai lần. Cảm ơn.
swiftBoy

19

Tôi đã gặp lỗi này sau khi thêm facebooksdk.jar vào một dự án đã có sự phụ thuộc vào android-support-v4.jar . Vì facebooksdk.jar đã bao gồm android-support-v4.jar của riêng nó , đã có xung đột. Việc xóa android-support-v4.jar trước đó khỏi các dự án Properties / Java Build Path / L Thư viện đã giải quyết vấn đề cho tôi.


18

Chuyển đến Project / property và Java Build Pathbỏ chọn các cá nhân Libraries Android .

Đây cũng là một trường hợp khác cho loại lỗi này

Làm xong


15

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.

Chỉnh sửa: bỏ qua điều đó. Tôi đã có cùng một jar trong thư mục maven và thư mục libs của tôi. Tôi loại bỏ một trong thư mục lib.


2
Loại bỏ các phụ thuộc Android khỏi đường dẫn xây dựng đã phá vỡ dự án của tôi. May mắn thay, thật dễ dàng để khôi phục bằng cách nhấp chuột phải vào dự án> Công cụ Android> Sửa thuộc tính dự án.
azdev

Trong một số trường hợp loại bỏ các phụ thuộc Android và tái tạo nó giải quyết một số vấn đề. Nhưng như trong chỉnh sửa của tôi đó không phải là trường hợp.
Hadi Tok

9

Bạn có thể đã cài đặt r14 , lỗi này có thể đã được gây ra do cập nhật công cụ nền tảng, bạn phải cài đặt lại sdk của mình


Tôi hoàn toàn thổi bay SDK của mình và cài đặt nó mới từ tệp zip đã tải xuống và sau đó tải API Android bằng Trình quản lý SDK Android. Tôi đã có hy vọng cao nhưng vấn đề vẫn tồn tại.
terry

Có một thư mục ẩn .android trong windows, bạn cũng nên xóa nó.
Reno

vấn đề tương tự tồn tại
McLan

9

Đối với tôi vấn đề này chỉ tồn tại miễn là có các dự án thư viện Android liên quan đến dự án của tôi. Vì vậy, khi tôi xóa tất cả các thư viện và làm như bạn nói tôi có thể chạy lại ứng dụng của mình. Nếu có các thư viện liên quan đến ngay cả thủ thuật bin-remove-trick cũng sẽ thắng.

Tôi không hiểu tại sao lỗi này xuất hiện lần đầu tiên hôm nay vì tôi đang sử dụng ADT 14 trong vài ngày nay. Vâng, có những lỗi khác giữ cho tôi hạnh phúc mặc dù.


Nhiều giải pháp trông giống như một số công cụ voodoo ... :)
Jasper

8

Xóa thư mục bin là không đủ, tôi cũng xóa thư mục gen. Sau đó, hai lần xây dựng lại, thông báo lỗi dex đã biến mất.


8

Chọn dự án trong Project Explorer , nhấp chuột phải và chọn Thuộc tính -> Đường dẫn xây dựng Java -> Nguồn -> Chọn hộp cho phép thư mục đầu ra cho các thư mục nguồn


Không giúp gì cho trường hợp của tôi.
Redux

8

Tôi đã cơ bản đối mặt với cùng một vấn đề. Tôi đã xóa thư mục BIN, sau đó xóa các tệp jar không sử dụng cho Đơn hàng và Nhập từ nhật thực. NÓ đã làm việc sau đó


7

Tôi đến bữa tiệc muộn, nhưng thêm kinh nghiệm của bản thân để tôi có thể tìm lại sau :)

Tôi gặp vấn đề này sau khi nâng cấp các quảng cáo sdk và nhật thực android. Không nâng cấp đi không bị trừng phạt!

Vấn đề đối với tôi liên quan đến các dự án thư viện, ứng dụng của tôi tham khảo cả các dự án java tiêu chuẩn và các dự án thư viện Android. Tôi nhận thấy các cài đặt Đường dẫn xây dựng Java bao gồm các thư mục src và các thư mục res trong danh sách Nguồn trong danh sách Nguồn (nâng cấp cho mọi người đề cập đến bin trong nguồn là vấn đề, src và res cũng là một vấn đề.)

Vì vậy, giải pháp là:

  1. Xóa tất cả các tham chiếu dự án nguồn và thư viện Android được tham chiếu khỏi phần Đường dẫn xây dựng Java của các cài đặt trong cả danh sách nguồn và danh sách dự án
  2. Đảm bảo các phụ thuộc java thuần túy được liệt kê trong danh sách Dự án và được kiểm tra trong tab Đặt hàng và Xuất để các lớp được bao gồm trong apk
  3. Đảm bảo tất cả các phụ thuộc thư viện Android được liệt kê trên phần Android của thuộc tính dự án, trong phần thư viện bên dưới các phiên bản SDK đã kiểm tra.

Đó là cách để ghép tất cả những thứ đó lại với nhau từ các giải pháp khác! Phù!


Vâng tuyên bố! Tôi đã đi đến kết luận giống hệt nhau sau rất nhiều công việc. Tôi chỉ muốn thêm rằng nếu bất kỳ dự án thư viện nào của bạn bao gồm các dự án thư viện khác hoặc các phụ thuộc thuần Java, thì tất cả chúng phải được thêm theo cùng một cách, nếu không sẽ xảy ra lỗi này. Nếu bạn tuân theo các quy tắc trên cho tất cả các dự án của mình, bạn sẽ không gặp vấn đề gì.
siết cổ

1
Một điều nữa ... có vẻ như nếu bạn không cần xuất Thư viện riêng Android của dự án hoặc dự án thư viện, thì không. Nếu có nhiều dự án hoặc dự án thư viện xuất nó, bạn sẽ gặp nhiều lỗi tập tin dex.
siết cổ

6

Tôi gặp phải vấn đề này khi tôi nâng cấp từ adt 14 lên 15 và để nó hoạt động, cuối cùng tôi chỉ xóa thư mục .eclipse (cùng với cài đặt của tôi) và cài đặt lại adt 15.


6

Sau khi đọc phản hồi của Terry về việc xóa thư mục bin và Larrys về vị trí của thư mục ANT:

Tôi đã chuyển các tập tin nằm trong thư mục BIN dự án của mình sang BIN / LỚP và tôi đang chạy.

Chỉnh sửa 1 Sau đó thất bại trong lần chạy thứ hai ... doh

Chỉnh sửa 2 Vì vậy, Eclipse đã đóng các tệp đã di chuyển trở lại vị trí ban đầu và tất cả đều hoạt động ... um gì? Tôi không giả vờ để biết tại sao điều này làm việc. Sẽ cập nhật nếu có thay đổi.

Chỉnh sửa 3 Tôi đã lưu ý từ các bản sao lưu của mình rằng thực sự có các tệp trùng lặp trong thư mục BIN và BIN / LỚP.

Vì vậy, câu trả lời là: không có tệp ở cả hai vị trí. Ít nhất với tôi đó là những gì đã làm việc.


Cố gắng giảm câu trả lời để: Kết luận hữu ích theo sau là sự kiện hỗ trợ . Tránh tường thuật lịch sử AMAP; Mọi người có xu hướng đánh dấu rằng, "không phải là một câu trả lời".
Brock Adams

cổ vũ cho điều đó, bất kỳ trợ giúp nào để làm cho sự lan man của tôi rõ ràng hơn được đánh giá cao
HostMyBus

6

Sửa đổi tệp eclipse.ini của bạn và đặt tham số bộ nhớ tối đa thành

-Xmx1024m

Sau đó khởi động lại máy tính của bạn.

Nó làm việc cho tôi.


1
Không có gì liên quan, cho thêm bộ nhớ không giải quyết được các vấn đề phụ thuộc
Sierisimo

6

Tìm thấy một giải pháp tôi tin ??

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

Trong đó có ghi: "Lcom / coremedia / iso / AbstractBoxParser $ 1" tình cờ là vị trí của thư viện tôi đã nhập gây ra sự cố. Đã tìm com.codemedia.iso.Ab tríchBoxParser $ 1. class và. Ab .BoxBoxParser. Class .... lấy cái hũ đó, giải nén nó, xóa cả hai tập tin đó, sau đó đóng gói lại dưới dạng .zip, thêm vào thư viện, được làm sạch và hoạt động! không còn xung đột với tôi! (cũng không có cập nhật hoặc tải xuống bổ sung)


6

Tôi đã có hai phiên bản khác nhau của Cordova .jar trong các thư mục libs của mình, tôi đã xóa phiên bản mà tôi thậm chí không sử dụng và nó hoạt động ngay lập tức. Thật kỳ lạ bởi vì tôi đã không nhận thấy điều đó trước đây và nó đã hoạt động trước đó và sau đó đột nhiên ngừng hoạt động ...


5

Bản cập nhật ADT R14 thay đổi trong đó các lớp chuyển đến thư mục bin / class (xem http://tools.android.com/recent/buildchangesinrevision14 ). Nếu bạn đang sử dụng ANT, bạn nên thay đổi đường dẫn cho các lớp của mình từ bin sang bin / class. Điều này làm việc cho tôi.


Tôi đang sử dụng Eclipse. Bạn có biết nơi bạn thay đổi đường dẫn lớp trong Eclipse không?
terry

5

Giải pháp cho tôi:

  1. TRỞ LẠI MÃ CỦA BẠN!
  2. Điều hướng đến không gian làm việc dự án của bạn (không phải dự án của bạn) và chạy các lệnh sau:

    dev1: không gian làm việc $ cd ~ / Documents / workspace / .metadata / .plugins / dev1: workspace $ rm -rf org.eclipse.core.resource

  3. Điều hướng đến thư mục Eclipse của bạn và gõ lệnh này:

    dev1: nhật thực $ ./eclipse rõ ràng

  4. Eclipse sẽ bắt đầu với một không gian làm việc trống - đừng lo các dự án của bạn vẫn ở đó. Đơn giản tạo dự án mới từ tài nguyên hiện có và mọi thứ nên được hấp dẫn.

Lỗi chính xác mà tôi đã nhận được: [2012/02/07 14:15:53 ​​- Trình tải Dex] Không thể thực thi dex: Nhiều tệp dex xác định Landroid / support / v4 / view / PagerAd CHƯƠNG; [2012/02/07 14:15:53 ​​- ProjectCloud] Chuyển đổi sang định dạng Dalvik không thành công: Không thể thực thi dex: Nhiều tệp dex xác định Landroid / support / v4 / view / PagerAd CHƯƠNG;


5

Tôi có một số dự án thư viện có cùng tên gói được chỉ định trong AndroidManifest (vì vậy không có tên trường trùng lặp nào được tạo bởi R.java). Tôi đã phải xóa mọi quyền và hoạt động khỏi AndroidManifest.xml cho tất cả các dự án thư viện để xóa lỗi để Manifest.java không được tạo nhiều lần. Hy vọng điều này có thể giúp một ai đó.


4

Sau khi thử tất cả các đề xuất khác mà không gặp may, tôi đã xóa tất cả nội dung trong thư mục 'bin' của dự án, sau đó chạy nhật thực một lần nữa và nó đã hoạt động.


4

Tôi đã chuyển đổi một dự án không phải thư viện thành một dự án thư viện, nhưng nó đã có một tệp jar được xây dựng trước đó trong thư mục libs. Loại bỏ tệp jar này gây ra lỗi này đi.


4

Tôi đã phải đối mặt với cùng một vấn đề sau đó tôi đã thấy trong khi đẩy ứng dụng của mình một số tệp jar được tải hai lần do đó có nhiều lỗi dex. Hãy truy cập vào thuộc tính dự án của bạn -> Đường dẫn xây dựng Java và thử bỏ chọn jar đang được tải hai lần.


4

[Giải quyết cho tôi]

bằng cách xóa thư viện trùng lặp "tệp JAR", sau đó xóa tệp BuildConfig.java, dự án Clean và công việc của nó.

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.