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.