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에서 제외 할 수있는 방법이 있습니까?
"하나는 Java의 일부입니다."- Android에는 'javax.realtime'이 없습니다. 안드로이드 애플리케이션을 컴파일 할 때 JDK의 클래스 라이브러리를 사용하지 않으므로, JDK의 클래스 라이브러리가 javax.realtime이라는 사실은 의미가 없다. – CommonsWare
답변을 주셔서 감사합니다. 100 % 정확합니다. 저의 실수입니다. 이 문제는'javax.realtime' 패키지를 포함하고 있기 때문에 javolution (JScience 라이브러리에서 유래)에 의존적이었습니다. –