2014-05-23 2 views
8

Android 애플리케이션에 Gradle을 사용하고 있으며 JScience 라이브러리 의존성을 사용하고 싶습니다. 하나는 JDK의 일부이며,이 때문에 프로젝트의 javax.realtime 패키지를 복제의 발생Gradle : JScience jar dependency (여러 개의 dex define)에서 javax.realtime 패키지를 제외하는 방법

UNEXPECTED TOP-LEVEL EXCEPTION: 
com.android.dex.DexException: Multiple dex files define Ljavax/realtime/MemoryArea; 
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594) 
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552) 
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533) 
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170) 
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188) 
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439) 
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287) 
    at com.android.dx.command.dexer.Main.run(Main.java:230) 
    at com.android.dx.command.dexer.Main.main(Main.java:199) 
    at com.android.dx.command.Main.main(Main.java:103) 

: 나는 도서관이 방법 추가 한 :

dependencies { 
    compile fileTree(dir: 'libs', include: '*.jar') 

    compile 'org.jscience:jscience:4.3.1' 

    testCompile group: 'junit', name: 'junit', version: '4.11' 
} 

을하지만 컴파일 시간에 나는 오류 두 번째는 Jscience 라이브러리에 있습니다. Gradle에서 Jscience 라이브러리에서이 패키지를 제거하려고 시도했습니다.

sourceSets { 
    main { 
     java { 
      exclude 'javax/realtime/**' 
     } 
    } 
} 

configurations { 
    all*.exclude group: 'javax.realtime' 
} 

하지만 도움이되지 않았습니다. 따라서 패키지는 여전히 종속성에 존재합니다.

컴파일 타임에 패키지를 jar에서 제외 할 수있는 방법이 있습니까?

+2

"하나는 Java의 일부입니다."- Android에는 'javax.realtime'이 없습니다. 안드로이드 애플리케이션을 컴파일 할 때 JDK의 클래스 라이브러리를 사용하지 않으므로, JDK의 클래스 라이브러리가 javax.realtime이라는 사실은 의미가 없다. – CommonsWare

+0

답변을 주셔서 감사합니다. 100 % 정확합니다. 저의 실수입니다. 이 문제는'javax.realtime' 패키지를 포함하고 있기 때문에 javolution (JScience 라이브러리에서 유래)에 의존적이었습니다. –

답변

16

누군가가 필요한 경우, 문제는 Javolution 종속성 JScience 라이브러리에서 발생했습니다. 그들은 모두 javax.runtime 패키지를 가지고 있습니다. Javolution을 제외하면 문제가 해결되었습니다.

compile ('org.jscience:jscience:4.3.1') { 
    exclude group: 'org.javolution', module: 'javolution' 
} 
+0

고맙습니다. 평소 경로'gradle -q app : dependencies'에 따라 중복되는 의존성을 찾을 수 없었습니다 .- 내가 물어볼 수 있다면 어떤 명령을 사용하여 응용 프로그램을 파고 들었습니까? – AllDayAmazing

+0

아직 기억이 안나지만 어쩌면 어떤 종류의'gradle dependencies' 명령이나 Intellij Idea의 의존성 트리 도구라고 생각합니다 –

+0

고마워요. 이 문제는 "java.exe가 0이 아닌 종료 값 2로 끝났습니다"라는 내 문제를 해결했습니다 .. – Ralphilius

관련 문제