dex를 실행할 수 없습니다 : 여러 dex 파일이 Lcom / myapp / R $ array를 정의합니다.


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.
  • 프로젝트 정리 및 재 구축- "프로젝트-> 자동 빌드"옵션을 비활성화 한 다음 "청소"및 "빌드"프로젝트를 비활성화 한 다음 실행 해보십시오. "자동 빌드"옵션을 켜기로 재설정
  • Android개발자 도구 재설치
  • Eclipse 재설치 (최신 버전 3.7.1로 업데이트)
  • 파일 시스템에서 가져 오는 새 프로젝트를 만들었습니다.
  • Subversion에서 새 프로젝트를 만들었습니다.

다음 답변을 따르고 싶지만 Mac에서 작동하는지 확실하지 않습니다 .. thanks
— McLan

라이브러리 프로젝트를 가져오고 lib 폴더에서 라이브러리 JAR도 가져 왔으면 lib 폴더와 [Build Path-> Configure Build Path]에서 jar 파일을 제거해야합니다. 그리고 작동합니다.
— Mehul

다음 링크에서 내 대답을보십시오. stackoverflow.com/a/38391449/3702595
— Sattar Hummatli

답변:


462

Eclipse를 사용할 때만 발생했기 때문에 동일한 문제가 있었지만 꽤 이상했습니다 (그러나 Ant에서는 괜찮 았습니다). 이것이 내가 고친 방법입니다.

  • 오른쪽 클릭 Project Name
  • 선택 Build Path->Configure Build Path
  • 에서 Java Build Path, 탭으로 이동Order and Export

  • .jar라이브러리를 체크 해제하십시오

때때로 : 주문 및 내보내기 탭에 jar 라이브러리가 없으므로 Android Private Libraries 항목을 선택 해제했습니다. 이제 내 프로젝트가 실행 중입니다.


내 프로젝트에서는 빌드 경로의 sdk 디렉토리에있는 지원 라이브러리를 포함 시켰으며 개미 빌드를 지원하기 위해 "libs"폴더에 지원 라이브러리가있었습니다. 하나를 선택 해제하고 문제가 해결되었습니다.
— Chris Feist

20
마지막으로 빌드와 시작 사이에 새로운 라이브러리가 내 프로젝트에 이미 등장했습니다. 이미 참조하고있는 지원 라이브러리를 포함하는 "Android Private Libraries"입니다. 그래서이 신비한 "다중 덱스 파일 정의 ____"가 나타났습니다. Java 빌드 경로를 확인하고이 새 항목을보고 원래 포함 된 지원 라이브러리를 선택 취소하면 문제가 해결되었습니다.
— Tom Pace

9
고마워 이것이 올바른 해결책입니다. 나는 왜 이클립스에 많은 버그가 있는지 모르겠다. 이제 상황은 코딩 할 수있는 2 시간과 6 시간이 지나서 이런 종류의 불필요한 문제에 대한 해결책을 찾아야합니다.
— Roy Mathew

44
주문 및 내보내기 탭에는 jar 라이브러리가 없으므로 선택하지 않은 Android Private Libraries항목이 있습니다. 이제 내 프로젝트가 실행 중입니다.
— Junior Mayhé

1
내 경우에는 내가했다 dublicate 'android 지원-v4.jar'의를. 내가 그것을 삭제 하면 오류가 사라졌다
— ymerdrengene

94

이전 버전의 도구에서 남은 일부 디렉토리와 파일을 정리 한 후에 문제가 해결되었습니다. ADT Rev 14는 바이너리가 저장되는 위치를 변경 합니다. 전체 bin 디렉토리를 삭제하고 Eclipse를 다시 시작한 후 빌드를 정리하고 강제로 다시 빌드했습니다. 처음에는 트릭을 수행하는 것처럼 보였지만 다음 실행 후 문제가 다시 발생했습니다.

마침내 bin 디렉토리가 프로젝트 빌드 경로에 포함되어 있음을 발견했습니다. 빌드 경로에서 bin을 제외하고 위의 단계를 반복했습니다. 이것은 내 문제를 해결했습니다.


42
도대체 구글. 이 문제는 R15에서도 계속 발생합니다.
— terry

2
최종 해결책을 포함하도록 위의 솔루션을 편집했습니다. 이제 영구적으로 해결되었습니다.
— terry

7
요컨대, 아무도 왜 문제가 발생 했는지, 그 의미와 해결 방법 을 알 수 없습니다 (Java 빌드 경로에 bin 디렉토리가 없습니다). 이러한 이유로 R15로 업데이트하지 않고 R9를 유지했습니다. 그러나 나는 여전히 비슷한 문제를 겪고 있습니다. 모든 팁이나 도움을 주시면 감사하겠습니다.
— Bill The Ape

6
@BillTheApe-동의했습니다. 이것은 실망스럽지 않으며 비용이 많이 듭니다.
— Tom Redman

@TRedman 마침내 문제 를 해결했습니다 . 이유를 이해하지 못한 채 웃지 마 LOL +1
— Bill The Ape

50

[나를 위해 해결]

Eclipse 프로젝트 특성-> Java 빌드 경로-> 주문 및 내보내기

Android 개인 라이브러리를 선택 취소하십시오.


4
내 경우에는 도움이되지 않았다
— redux


46

위의 어느 것도 도움이되지 않았습니다. 결국 간단한 문제였습니다.

FacebookSDK와 ViewPagerIndicator를 라이브러리 프로젝트로 사용하는 프로젝트가 있습니다. 모두 Android API 16을 기반으로 구축되었으며이 두 프로젝트는 Android 지원 라이브러리 vX (X는 16이 아님)를 사용했습니다.

두 프로젝트 모두에 외부 JAR을 추가하고 \ extras \ android \ v4를 가리 켰습니다. 또한 libs 폴더에있는 v4 jar도 제거했습니다.

모든 프로젝트를 정리하고 다시 빌드하십시오.

짜잔!

내가받은 정확한 오류 : dex를 실행할 수 없음 : 여러 dex 파일이 Landroid / support / v4 / view / PagerAdapter를 정의합니다. Dalvik 형식으로 변환하지 못했습니다 : dex를 실행할 수 없습니다 : 여러 dex 파일이 Landroid / support / v4 / view / PagerAdapter를 정의합니다.


36

이 문제는 저에게 발생했습니다 .gson-2.2.2.jar라는 libs 폴더에 외부 .jar이 있지만 어떤 이유로 gson-2.2.2.jar와 gson-2.2.2.jar (두 가지)이있었습니다. 1), 나는 단순히 후자를 삭제하고 내 프로젝트는 다시 잘 구축되었습니다.


2
libs 폴더에 오래된 jar 파일이 있고 동일한 작업 공간의 최신 jar 파일에 연결할 때 비슷한 문제가 발생했습니다. ADT가 동일한 기호에 대한 여러 정의를 찾으면 다음과 같은 오류가 발생합니다. libs 폴더에서 오래된 jar 파일을 삭제하면 문제가 해결되었습니다.
— phyatt

외부 병은 문제의 원인 중 하나이며 내 경우에도 마찬가지입니다. /libs이전 실험에서 남은 항아리가 있었기 때문에 라이브러리 프로젝트와 .jar이 생성되었습니다. 해당 항아리를 삭제 /libs하면 문제가 해결됩니다. +1
— ripopenid

31
  1. 일식을 닫습니다.
  2. 프로젝트 폴더 안의 bin 폴더를 삭제하십시오.
  3. 일식을 시작하고 프로젝트를 청소하십시오.
  4. 이제 실행하면 문제가 사라져야합니다

Mateus Viccari의 대답은 내 문제를 해결하고 중복 라이브러리를 제거
— 했으며

파예드 근무가 manifest file에서 일식에 의해 제거 얻을 bin수동으로 추가하고 다시 깨끗한 프로젝트 디렉토리.
— Mehul Joisar

나를 위해 작동합니다. 또한 두 개의 다른 위치에 동일한 .jar이 없는지 확인하십시오 (제 경우에는 라이브러리 프로젝트와 해당 라이브러리 프로젝트를 참조하는 프로젝트 모두에 있습니다. Eclipse는 어떤 이유로 자동으로 추가 한 것으로 보입니다)
— Magnus W

나를 위해 방금 ENTIRE 작업 공간을 청소했습니다. 단순히 프로젝트를 청소하는 것만으로는 충분하지 않았습니다. 내 문제는 깨끗한 작업 중에 프로젝트 중 하나를 "라이브러리"로 전환하는 것과 관련이 있다고 생각합니다
— 기술론

내 경우에는 도움이되지 않았다
— redux

26

다른 사람들이 언급했듯이, 이것은 빌드 경로에 동일한 클래스의 여러 사본이있을 때 발생합니다. 클래스 경로에 bin /을 포함하면이 문제를 보장 할 수 있습니다.

나를 위해, 이것은 내 libs / 폴더에 android-support-v4.jar을 추가했을 때 발생했으며 어떻게 든 일식은 bin / classes / android-support-v4.jar에 두 번째 사본을 추가했습니다.

bin / classes에서 여분의 사본을 삭제하면 문제점이 해결되었습니다. Eclipse가 왜 사본을 작성했는지 확실하지 않습니다.

당신은 이것을 테스트 할 수 있습니다

grep -r YourOffendingClassName YourApp | 병마개


23

나를 위해 프로젝트-> 빌드 경로-> 빌드 경로 구성-> 라이브러리-> 종속성 제거를 마우스 오른쪽 버튼으로 클릭하십시오.

작동 후.


20

동일한 클래스 이름을 포함하는 두 개의 jar이있는 경우이 오류가 발생할 수 있습니다. 예를 들어 두 개의 라이브러리가 있습니다. 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은 이미 자체 포함 안드로이드 지원-v4.jar를 충돌이 있었다. 프로젝트 Properties / Java Build Path / Libraries 에서 이전 android-support-v4.jar 를 제거하면 문제가 해결되었습니다.


18

이동 프로젝트 / 속성 및 Java 빌드 경로 및 선택 해제 안드로이드 개인 라이브러리 .

이것은 이런 종류의 오류에 대한 또 다른 경우입니다.

끝난


15

빌드 경로에서 Android 종속성을 제거하고 작동했습니다.

편집 : 무시하십시오. 내 maven 종속성 및 libs 폴더에 동일한 jar이 있습니다. lib 폴더에서 하나를 제거했습니다.


2
빌드 경로에서 Android 종속성을 제거하면 프로젝트가 중단되었습니다. 다행히 프로젝트> Android 도구> 프로젝트 속성 수정을 마우스 오른쪽 단추로 클릭하여 쉽게 복원 할 수있었습니다.
— azdev

경우에 따라 안드로이드 종속성을 제거하고 재생성하면 일부 문제가 해결됩니다. 그러나 내 편집에서와 같이 그것은 사실이 아닙니다.
— Hadi Tok

9

r14를 설치 했을 가능성 이 있습니다.이 오류는 플랫폼 도구 업데이트로 인해 발생한 것일 수 있습니다. SDK를 다시 설치해야합니다.


방금 SDK를 완전히 다운로드하여 다운로드 한 zip 파일에서 새로 설치 한 다음 Android SDK Manager로 Android API를로드했습니다. 나는 큰 희망을 가지고 있었지만 문제는 계속됩니다.
— terry

Windows에 .android 숨겨진 폴더가 있으므로 삭제해야합니다.
— Reno

같은 문제가 존재합니다
— McLan

9

나 에게이 문제는 내 프로젝트에 관련된 Android 라이브러리 프로젝트가있는 한 존재합니다. 그래서 모든 라이브러리를 제거하고 당신이 말한대로 할 때 앱을 다시 실행할 수 있습니다. 라이브러리가 있으면 bin-removal-trick 트릭도 작동합니다.

ADT 14를 며칠 동안 사용하고 있는데 왜이 버그가 오늘 처음 나타 났는지 모르겠습니다. 그래도 나를 행복하게하는 다른 버그가있었습니다.


솔루션의 대부분은 부두의 물건처럼 보입니다 ... :)
— Jasper

8

bin 폴더를 삭제하는 것만으로는 충분하지 않았으며 gen 폴더도 삭제했습니다. 그런 다음 두 번 다시 빌드 한 후 dex 오류 메시지가 사라졌습니다.


8

프로젝트 탐색기 에서 프로젝트를 선택하고 마우스 오른쪽 단추를 클릭하고 특성 -> Java 빌드 경로 -> 소스 -> 소스 폴더의 출력 폴더 허용 상자를 선택하십시오.


내 사건을 도와주지 않았다.
— redux

8

나는 기본적으로 같은 문제에 직면했다. BIN 폴더를 삭제 한 다음 Eclipse에서 주문 및 가져 오기에 사용되지 않는 jar 파일을 제거했습니다. 그 후로 일했습니다.


7

이 파티에 늦었지만 나중에 다시 찾을 수 있도록 내 경험을 추가했습니다. :)

안드로이드 SDK와 이클립스 애드 인을 업그레이드 한 후이 문제가 발생했습니다. 승급되지 않은 업그레이드는 없습니다!

나에게 대한 문제는 라이브러리 프로젝트와 관련이 있었고 내 응용 프로그램은 표준 Java 프로젝트와 Android 라이브러리 프로젝트를 모두 참조합니다. Java Build Path 설정에 Android 라이브러리 프로젝트 src 및 res 폴더가 소스 목록에 포함되어 있음을 알았습니다 (소스에서 bin을 언급하는 모든 사람들에게 src 및 res도 문제가되었습니다).

따라서 해결책은 다음과 같습니다.

  1. 소스 목록 및 프로젝트 목록에있는 설정의 Java 빌드 경로 섹션에서 참조 된 모든 Android 라이브러리 소스 및 프로젝트 참조를 제거하십시오.
  2. 순수 자바 의존성이 프로젝트 목록에 나열되고 주문 및 내보내기 탭에서 확인되어 클래스가 APK에 포함되도록하십시오.
  3. 모든 Android 라이브러리 종속성이 확인 된 SDK 버전 아래의 라이브러리 섹션에있는 프로젝트 특성의 Android 섹션에 나열되어 있는지 확인하십시오.

다른 솔루션과 함께 모든 것을 하나로 모으기 시작했습니다! 휴!


잘 말 했어요! 많은 일을 한 후에도 같은 결론에 도달했습니다. 라이브러리 프로젝트 중 하나에 다른 라이브러리 프로젝트 또는 순수 Java 종속성이 포함되어 있으면 모두 동일한 방식으로 추가해야한다는 점을 추가하고 싶습니다. 그렇지 않으면이 오류가 발생합니다. 모든 프로젝트에 대해 위의 규칙을 따른다면 아무런 문제가 없습니다.
— strangeluck

1
한 가지 더 ... 프로젝트 또는 라이브러리 프로젝트의 Android 개인 라이브러리를 내보낼 필요가없는 경우에는 그렇지 않습니다. 둘 이상의 프로젝트 또는 라이브러리 프로젝트가 내 보내면 여러 덱스 파일 오류가 발생합니다.
— strangeluck

6

adt 14에서 15로 업그레이드 할 때이 문제가 발생하여 작동하도록하기 위해 .eclipse 폴더를 삭제하고 (내 설정과 함께) adt 15를 다시 설치했습니다.


6

bin 디렉토리 삭제에 대한 Terrys 응답 및 ANT 디렉토리의 위치에 대한 Larrys를 읽은 후 :

내 프로젝트 BIN 디렉토리에있는 파일을 BIN / CLASSES로 옮기고 실행 중입니다.

편집 1 그런 다음 두 번째 실행에서 실패했습니다 ... doh

편집 2 그래서 닫힌 Eclipse는 파일을 원래 위치로 옮기고 모든 작업을 수행했습니다 ... 음 무엇? 나는 이것이 왜 효과가 있었는지 척하지 않습니다. 변경 사항이 있으면 업데이트됩니다.

편집 3 백업에서 BIN 디렉토리와 BIN / CLASSES에 실제로 중복 파일이 있음을 알았습니다.

그래서 대답은 : 두 위치에있는 파일이 없습니다. 적어도 저에게는 그것이 효과가있었습니다.


: 답변을 줄이기 위해 시도 도움 결론 다음에 사실을 지원 . 역사 이야기 AMAP를 피하십시오; 사람들은 "답이 아님"이라고 생각하는 경향이 있습니다.
— Brock Adams

그것을위한 건배, 내 얘기 일을 만들기 위해 어떤 도움에 감사드립니다 명확
— HostMyBus

6

eclipse.ini 파일을 수정 하고 최대 메모리 매개 변수를

-Xmx1024m

그런 다음 컴퓨터를 다시 시작하십시오.

그것은 나를 위해 일했다.


1
더 이상 관련이없고 더 많은 메모리를 제공
— 한다고

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.AbstractBoxParser $ 1.class 및 .AbstractBoxParser.class ....를 찾고 해당 jar를 가져 와서 압축을 풀고 두 파일을 모두 제거한 다음 .zip으로 다시 패키지하여 라이브러리에 추가하고 정리하고 작업했습니다! 더 이상 나를 위해 갈등! (업데이트 또는 추가 다운로드도 없음)


6

libs 폴더에 Cordova .jar 파일의 두 가지 버전이 있었는데 사용하지 않은 파일을 삭제했으며 바로 작동했습니다. 내가 전에 그것을 알지 못했기 때문에 이상하고 그것은 전에 일하고 갑자기 작동을 멈췄습니다 ...


5

ADT R14 업데이트는 클래스가 bin / classes 디렉토리로 이동하는 위치가 변경됩니다 ( http://tools.android.com/recent/buildchangesinrevision14 참조 ). ANT를 사용하는 경우 클래스 경로를 bin에서 bin / classes로 변경해야합니다. 이것은 나를 위해 일했습니다.


Eclipse를 사용하고 있습니다. Eclipse에서 클래스 경로를 어디에서 변경하는지 알고 있습니까?
— terry

5

나를위한 해결책 :

  1. 코드를 백업하십시오!
  2. 프로젝트가 아닌 프로젝트 작업 공간으로 이동하여 다음 명령을 실행하십시오.

    dev1 : workspace $ cd ~ / Documents / workspace / .metadata / .plugins / dev1 : workspace $ rm -rf org.eclipse.core.resources

  3. Eclipse 디렉토리로 이동하여 다음 명령을 입력하십시오.

    dev1 : eclipse $ ./eclipse clear

  4. Eclipse는 빈 작업 공간으로 시작합니다. 프로젝트가 아직 남아 있다고 걱정하지 마십시오. 기존 자원으로 새 프로젝트를 간단하게 만들 수 있으므로 사물을 그레이비해야합니다.

내가받은 정확한 오류 : [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에 의해 생성되지 않습니다). Manifest.java가 여러 번 작성되지 않도록 오류를 제거하기 위해 모든 라이브러리 프로젝트에 대해 AndroidManifest.xml에서 권한 및 활동을 제거해야했습니다. 잘하면 이것은 누군가를 도울 수 있습니다.


4

운이없이 다른 제안을 모두 시도한 후 프로젝트 'bin'디렉토리의 모든 내용을 삭제 한 다음 일식을 다시 실행하면 효과가있었습니다.


4

라이브러리가 아닌 프로젝트를 라이브러리 프로젝트로 변환했지만 libs 폴더에 이전에 빌드 된 jar 파일이있었습니다. 이 jar 파일을 제거하면이 오류가 사라졌습니다.


4

나는 같은 문제에 직면하고 있었고 내 응용 프로그램에 여러 개의 dex 오류가 두 번로드 된 jar 파일을 푸시하는 동안 보았습니다. 프로젝트 속성-> Java 빌드 경로로 이동하여 두 번로드되는 jar을 선택 취소하십시오.


4

[나를 위해 해결]

중복 라이브러리 "JAR 파일"을 제거한 다음 BuildConfig.java 파일, 프로젝트 및 해당 작업을 제거하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.