덱스를 실행할 수 없음 : 여러 덱스 파일이 정의


125

나는이 질문이 몇 번 전에 여기에서 요청되었음을 알고 있습니다. 그러나 아직 가능한 해결책을 보지 못했습니다. 프로젝트를 'Android 응용 프로그램으로 실행'으로 만들기 전에 청소하지 않으면 다음 오류가 발생하고 Eclipse를 다시 시작하고 다시 청소해야합니다.

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

com.jstun.core ...는 내 src 폴더의 일부이며 물론 제거 할 수 없습니다. 그리고 해당 패키지를 제거하더라도 다른 패키지는 다음과 같은 오류로 표시됩니다.

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

ADT 15로 업데이트 한 후이 오류가 발생했습니다. Ubuntu에서 Eclipse Galileo를 사용하고 있습니다. 아이디어가 있습니까? 답장을 보내 주셔서 감사합니다!


이 스레드에서 거의 모든 것을 시도했지만 작동하지 않았습니다. 프로젝트를 삭제 한 다음 새 프로젝트를 작성하고 백업에서 소스 파일을 붙여 넣어 복사하여 문제를 해결했습니다.
linuxjava

이것을 참조하십시오. stackoverflow.com/questions/34415101/…
Steve

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

답변:


136

이것은 빌드 경로 문제입니다.

  • bin 폴더가 빌드 경로에 포함되어 있지 않은지 확인하십시오.

  • 프로젝트를 마우스 오른쪽 버튼으로 클릭-> 속성-> 빌드 경로로 이동하십시오.

  • Honeycomb 라이브러리가 libs/소스 폴더가 아닌 폴더 에 있는지 확인하십시오 .

  • libs/빌드 경로에 라이브러리를 개별적으로 포함하십시오 .

    BTW, android-support-v4Honeycomb 지원 라이브러리 대신 Ice Cream Sandwich 지원을 받기 위해 라이브러리를 가져올 수 있습니다.


50
빌드 경로에 물리적으로 여러 버전의 라이브러리가 포함 된 경우에도이 문제가 발생했습니다. 사용하지 않는 라이브러리를 libs경로에서 제거하고 프로젝트를 정리하고 저장 한 다음 Eclipse를 다시 시작하고 다시 컴파일하면 나에게 도움이됩니다.
Aryo

빌드 경로에서 bin 폴더를 제외하면 해결되었습니다. 감사!
alekop

2
문제의 근본 원인은 라이브러리 중 하나가 nineoldandroid 라이브러리를 ./libs 디렉토리에 저장된 jar로 사용하고 다른 프로젝트가 nineoldandroid를 참조하여 사용하고 있었기 때문입니다.
Deepika Lalra

이것은 Foo.java패키지 나 Foo.java항아리 안에 같은 것이있을 때도 발생할 수 있습니다 .libs/
tricknology

이 오류 / 버그는 프로젝트 폴더가 Google 드라이브에있을 때 발생합니다. 드라이브가 동기화되면 버그가 발생합니다. 적어도 나를 위해
ymerdrengene

58

오늘 비슷한 오류가 발생했으며 그 이유는 지원 라이브러리가 내 앱 프로젝트에서 사용되었지만 버전이 다른 두 개의 라이브러리 프로젝트에서 참조했기 때문입니다.

자세한 내용 : 내 앱은 2 개의 라이브러리 프로젝트에 의존합니다.

  • android-support-v4를 참조하는 FaceBookSDK 3.0->
  • ActionBarSherlock->-android-support-v4를 참조하지만 맵을 지원하도록 수정 된 버전입니다.

문제를 해결하기 위해 FaceBookSDK 라이브러리를 지원 라이브러리 대신 ABS 라이브러리에 직접 의존시켜야했습니다.


예, 제 문제는 비슷했습니다. 두 개의 라이브러리에는 httpmime 라이브러리가 있으므로 하나를 제거하고 다른 프로젝트를 가리 키도록했습니다.
매트

10
너희 중 누구도 어떻게했는지 정확히 설명 할 수 있습니까?
Samih A

3
언급 한 예에서 @samih는 먼저 FaceBookSDK 프로젝트 lib 폴더 및 빌드 경로에서 android-support-v4 jar을 제거했습니다. 그런 다음 ActionBarSherlock 라이브러리 프로젝트에 대한 참조를 추가했습니다.
M.Sameer

나를 위해 다른 개발자가 이전 버전을 삭제하지 않고 새로운 버전의 라이브러리 jar 파일을 추가했습니다. 그래서 같은 클래스를 가진 두 개의 항아리가있었습니다. 따라서 'Multiple dex files ...'오류가 발생했습니다. grep -r 'OffendingClassName'| grep jar $를 사용하여 클래스 이름이 포함 된 jar 파일을 검색하십시오.
bibstha

비슷하지만 실수로 android-support-v4.jarEclipse 빌드 경로에 실수로 추가 하고 libs내가 만든 폴더에 수동으로 추가했습니다 . 중복 참조로 인해 컴파일 할 수 없었으며 OP에 오류 메시지가 표시되었습니다. 내가 libs바보로 만든 폴더를 삭제 하고 모든 것이 작동했습니다. 힌트 주셔서 감사합니다.
kurtzbot 2016 년

47

글쎄, android support v4.jar라는 libs 폴더에서 파일을 삭제하고 모두 해결되었습니다. 행운을 빕니다 :)


1
나를 위해 그것은 파일 안드로이드 지원 v4.jar (1) .jar였습니다. 방금 제거하고 프로젝트를 청소했습니다!
ymerdrengene

33

나는 같은 오류가 발생했고 그것을 고칠 때마다 Eclipse를 다시 시작한 후에 다시 나타날 것입니다.

우선 다른 사람들이 말했듯이 프로젝트 주위에 동일한 .jar 파일의 사본이 여러 개 없도록하십시오.

필자의 경우 ActionBarSherlock (다른 라이브러리 프로젝트 중에서)을 사용하는 주요 프로젝트가있었습니다. 나를 위해 일한 트릭은 들어가고 ActionBarSherlock --> Properties --> Java Build path --> Order of Export선택을 해제했다 Android Private Libraries. 그런 다음 Project -> Clean프로젝트를 올바르게 빌드 할 수 있습니다.

이제 어떤 이유로 든 Eclipse를 다시 시작할 때마다 해당 확인란이 자동으로 활성화 되므로이 과정을 다시 반복해야합니다.

희망은 이것이 잃어버린 영혼을 도울 수 있기를 바랍니다 :)


32

프로젝트 / 속성 및 Java 빌드 경로로 이동하여 Android 개인 라이브러리를 선택 해제하십시오.


1
내 문제도 해결되었습니다!
Totic

그러나 gcm.jar가 작동을 멈 추면이 오류없이 작동시키는 방법은 무엇입니까?
Narendra Singh

오류가 발생했습니다 : 다중 dex Lcom / google / android / gms / analytics / internal / Command $ 1. 구글 플레이를 22.1.1로 업그레이드 한 후 이것을 얻었습니다. Google Play 프로젝트에서 비공개 라이브러리를 선택 해제하면 오류가 제거되었습니다.
eugene

당신은 내 생명을 구했습니다! Thx ~
Leo Hsieh

15

나에게 프로젝트 속성 >> Java 빌드 경로 >> 주문 및 내보내기로 이동하십시오. 아래 그림과 같이 모든 외부 라이브러리를 선택 취소하십시오. 그것은 나를 위해 작동합니다. 이 도움을 바랍니다.

프로젝트 속성


그것은 나를 위해 문제였다
Piyush-Ask의 차이점

8

나는 또한 프로젝트 에서이 문제에 직면했다. AVD는 자산, 라이브러리, 해상도 및 기타 폴더 컨텍스트를 다시로드 할 수 없습니다. problem : Dex Loader] dex를 실행할 수 없습니다 : 여러 dex 파일이 정의되었습니다 Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl.

다음, 나는 새로운 프로젝트 복사 생성 MainActivity.java, activity_main.xml, 당김 컨텍스트를. 그런 다음 패키지 탐색에서 오래된 프로젝트를 삭제하고 Eclipse 및 AVD를 다시 시작하십시오. 내 프로젝트가 이제 제대로 작동하고 있습니다 .... :)이 단계가 약간의 사람들에게 도움이되기를 바랍니다.


8

나는 같은 문제가 있는데, 내가 시도한 것은 :

  1. 아이템 목록
  2. 프로젝트 빌드 경로를 열고
  3. "라이브러리"탭을 선택하고
  4. Android 라이브러리를 제외한 모든 라이브러리를 제거하십시오.
  5. 모든 필수 JAR 파일 추가
  6. 그리고 완료!

그것은 나를 위해 작동합니다, 감사합니다.


예, 방금 똑같이했습니다. 모든 jar 파일을 제거하고 다시 추가했습니다. 순서와 내보내기, 검사되지 않은 종속성 및 방금 추가 된 모든 라이브러리를 확인했습니다
Maulik Sheth

6

phonegap의 facebook-connent-plugin 으로이 문제에 직면 한 사람이 있다면

bin / class / com / facebook / android 디렉토리에서 파일을 제거하십시오! -> 및 재 구축


이것이 정답입니다. 설명은 ---- facebook.android는 두 번 포함됩니다. 프로젝트에 포함 된 facebookSDK.jar에 일단 Java 파일이 프로젝트에 직접 포함되면. 프로젝트에서 제거하는 것이 깔끔한 방법입니다. 다른 모든 답변은 정의 나 무언가를 내 보내지 않는 해결 방법 일뿐입니다 ....
Sandeep Taneja

6

다른 사람들이 언급했듯이, 빌드 경로 또는 설정의 다른 곳에 동일한 클래스의 사본이 여러 개인 경우에 발생합니다.

나는 libs / 폴더에 android-support-v4.jar를 추가했으며 어떻게 든 일식은 bin / classes / android-support-v4.jar에 두 번째 사본을 추가했습니다.

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

grep -r YourOffendingClassName YourApp | 병마개

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


1
나는 여기에 나열된 다른 모든 옵션을 시도했지만 이것이 나를 위해 해결 한 것입니다! :) 그리고 예, Eclipse는 죽어야하고 Android Studio는 버전 1.0을 가져와야합니다. 그러면 세상이 더 나은 곳이 될 것입니다.
Johan Paul

5

다른 이유로이 오류가 발생했습니다. v4와 v13 지원 라이브러리를 모두 추가하는 데 착각했습니다. minSdkVersion이 15이므로 나에게 필요하지 않았습니다.

v13 지원 라이브러리 포함하여 수정했습니다 . 또한 내 보낸 라이브러리 빌드 경로에서 라이브러리를 일식으로 확인 표시하십시오. 나는 또한 그것을 맨 위로 옮겼습니다.


이것은 나에게도 도움이되었습니다. v13 지원 라이브러리 에는 v4 지원 라이브러리가 포함되어 있으므로 dex에 여러 클래스 선언이 표시되었습니다.
Kyle Falconer

4

여러 답변을 거친 후에도 해결책이 없었습니다.

빌드 경로에서 "Android Dependencies"를 삭제했습니다. 모든 jar 파일을 빌드 경로에 다시 추가했는데 오류가 사라졌습니다. 어떻게 든 일식은 물건을 캐시하는 것처럼 보였다.


3

나는 내가했던 것처럼이 시나리오에 나오는 누군가를 위해이 답변을 남겨두고 있습니다.

지원 라이브러리 JAR 파일을 실수로 내 src 폴더로 끌어서 놓았다는 사실을 알기 전에 여기저기서 넘어졌습니다. 나는 그것이 어떻게 일어 났는지 또는 거기에서 떨어 뜨렸을 때를 전혀 몰랐기 때문에, 그곳에서 무언가 잘못되었다고 상상할 수 없었습니다.

같은 오류가 발생했습니다. 언젠가 문제를 발견하고 제거했습니다. 프로젝트는 이제 잘 작동하고 있습니다.


3

나를위한 해결책은 다음과 같은 일을하는 것이 었습니다.

  1. -> 프로젝트의 lib 디렉토리에서 여러 요소를 삭제하십시오.
  2. Project-> Properties-> Java build Path and delete Dependency Library는 사용자가 아닌 자동으로 추가되었습니다! -> 적용
  3. Eclipse IDE 재시작
  4. 이제 프로젝트를 청소하십시오.
  5. 장치 / 에뮬레이터에서 프로젝트 실행 / 디버그 ... Good Luck

문제는 여전히 지속
Akhil Jain

2

처음에 내 문제는 다음과 같습니다.

java.nio.BufferOverflowException dex를 실행할 수 없습니다. 스택 추적에 대한 Eclipse 로그를 확인하십시오.

1) 프로젝트를 마우스 오른쪽 버튼으로 클릭-> Android 도구-> 지원 라이브러리 추가 (앱 실행 ... 작동하지 않아 계속 작동합니다 ...) 2) 프로젝트를 다시 마우스 오른쪽 버튼으로 클릭 -> 속성-> Android-> Project Build Target에서 Android 4.1.2 (16)확인하십시오 (앱을 다시 실행하십시오 ...

dex를 실행할 수 없습니다 : 여러 dex 파일이 Landroid / support / v4 / app / BackStackState를 정의합니다.

3) 그래서 나는 프로젝트 의 "lib"폴더 로 가서 "old"Android.support.library.jar를 삭제 합니다 (앱을 실행하고 손가락을 엇갈리게하고 ...)

효과가있다!

누군가에게 도움이되기를 바랍니다 ... 감사합니다!


2

나는이 문제가 있었고 그것이 동일한 라이브러리가 여러 번로드되었지만 시스템이 동일한 이름과 가능한 동일한 패키지 이름을 가진 클래스를 동시에로드하려고한다는 것을 의미하지는 않습니다.

  • com.pack1.deClass Geometrylibrary1.jar

그리고 또 다른

  • com.pack1.deClass Geometrylibrary2.jar.

어떻게 접근해야합니까? 어떤 방법을 사용하고 있는지, library1.jar 또는 library2의 방법을 분석해야합니다.

2 가지 솔루션이 있습니다.

  1. 패키지 이름을 변경 한 다음 달빅은 개별 클래스임을 해석합니다.
  2. 또는 위험을 감수하려면 실제로 사용하는 방법이 포함되지 않은 클래스를 제거하십시오.

나는 이것이 자주 묻는 질문을 명확히하기를 바랍니다.


2

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


1

이 오류는 내 앱 프로젝트에서 Eclipse 작업 공간 (내 경우에는 Facebook SDK)에서 라이브러리 프로젝트를 참조 하고 동시에 Facebook SDK를 jar 폴더로 libs 폴더에 포함시킬 때 발생했습니다 . 라이브러리 참조를 제거하지만 jars를 libs 폴더에 유지하면 오류가 제거되었습니다.


1

나는 같은 문제가 있었다. .apk파일 을 삭제 한 다음 작동했습니다.


1

나를 위해 lib 폴더에서 android-support-v4.jar을 삭제하고 빌드 경로에서도 제거했습니다.


안녕하세요 Rach, Stackoverflow에 오신 것을 환영합니다. 답변의 길이와 내용으로 인해 품질이 낮은 것으로 표시되었습니다. 질문에 대답 할 때 문제 해결 방법에 대한 추가 설명을 제공하십시오. 그것은 다른 사람들을 돕고 당신에게 명성을 얻을 것입니다 :)
superhero

1
  • 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 build Path>configuration build path
  • 라이브러리 탭을 선택하고을 support-v4 library클릭하고 제거를 클릭하십시오.
  • 확인을 클릭하십시오

그런 다음 프로젝트를 정리하고 실행하면 작동합니다 :-)


0

내가 방금했던 것처럼 다른 사람 이이 문제에 대해 머리를 때리는 경우 :

제 사건은 일련의 도서관 프로젝트와 관련이 있습니다. 모든 라이브러리에서 프로젝트를 깨끗하게 청소하면 모든 것이 고정됩니다.


0

나는 일식에서 아래의 해결책을 찾았다.

Right click on the Project Name

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

Unchecked your .jar library's

0

이 문제는 동일한 라이브러리가 프로젝트에 여러 번 추가 될 때 발생합니다. 라이브러리를 의도적으로 여러 번 추가하지 않은 경우 프로젝트에 추가 한 라이브러리의 종속성 / 개인 라이브러리를 확인하십시오. 아마도 이러한 충돌을 일으키는 라이브러리가 이미 포함되어있을 것입니다.


0

나는 또한 이것이 문제라는 것을 알기 위해 고심하고 있었다. 제 경우에는 APK를 전자 메일로 복사하는 동안 발생했습니다 (드래그 드롭). 실수로 apk는 패키지 중 하나의 src 폴더에 붙여 넣었습니다. 소스 폴더에서 apk를 제거한 후 정상적으로 작동했습니다.


0

Intellij 에서이 문제가 있었고 프로젝트에 추가 한 ActionBarSherlock 라이브러리가 android-support-v4.jar을 컴파일 종속성으로 정의 했으며이 jar이 이미 프로젝트에 포함되어 DEX의 여러 사본 / 버전이 있었기 때문입니다. 컴파일 시간.

해결책은 내 프로젝트에서 이미 제공 한 것처럼이 jar에 대한 ActionBarSherlock 모듈 종속성을 컴파일 대신 런타임으로 변경하는 것이 었습니다.


0

나에게 문제는 이전에 lib 프로젝트 (autobahn lib)를 추가하고 나중에 동일한 라이브러리의 Jar 파일로 전환했지만 이전 라이브러리 프로젝트에 대한 참조를 제거했지만이 오류가 발생한다는 것입니다. 여기에있는 모든 대답에 따라 빌드 경로 등을 확인했지만 경로를 수동으로 빌드하기 위해 이러한 라이브러리를 추가하지 않았습니다. 그래서 나는 제거 할 것이 없었습니다. 마침내이 폴더를 발견했습니다.

bin / dexedLibs

autobahn Android에 해당하는 동일한 이름을 가진 두 개의 jar 파일이 충돌을 일으키는 것으로 나타났습니다. 그래서 dexedLibs 폴더의 모든 jar 파일을 삭제하고 프로젝트를 다시 빌드하십시오. 문제가 해결되었습니다.


0

수많은 다른 잠재적 인 소스를 추가하기 위해 ... 프로젝트 lib폴더 의 모든 라이브러리를 업데이트 했지만 Eclipse는 모든 원본 라이브러리를 "유용하게"재설치했습니다. 이클립스에서이 라이브러리에 대한 참조는 더 이상 없었지만 외부 dex-maker 프로그램은 lib디렉토리의 모든 파일을 가져 와서 여러 라이브러리 .jar파일 의 두 가지 버전을 얻었습니다 .

git status새 파일을 식별하고 git clean -f제거했습니다 (복사본에서 여전히 파일이 열려 있기 때문에 Windows에서 Eclipse를 기다리거나 다시 시작 해야하는 경우가 있음).


0

매우 간단한 솔루션과 최고의 기능 :

Android XY를 제외하고 기본 프로젝트 폴더-> 특성-> Java 빌드 경로를 마우스 오른쪽 단추로 클릭하여 모든 것을 제거하십시오 (여기서 XY는 Android 버전 임). 깨끗하고 구축하십시오. 끝난!

그 전에 하나의 android-support-v4.jar을 가져야합니다.


0

cordova를 사용하는 경우 cordova clean 명령을 사용하십시오.

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