我在我的Android应用程序中使用Gradle,我想使用JScience库依赖关系。我已经加入了图书馆这样:Gradle:如何从JScience jar依赖关系中排除javax.realtime包(Multiple dex define)
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile 'org.jscience:jscience:4.3.1'
testCompile group: 'junit', name: 'junit', version: '4.11'
}
但是在编译时出现错误:
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)
这是因为重复项目javax.realtime
包引起的,一个是JDK的一部分,第二个在Jscience图书馆。我试图从Jscience库这样在摇篮中删除这个包:
sourceSets {
main {
java {
exclude 'javax/realtime/**'
}
}
}
configurations {
all*.exclude group: 'javax.realtime'
}
但是这并没有帮助。所以,这个包依然存在于依赖中。
有什么办法可以在编译时从jar中排除一个包吗?
“一个是Java的一部分” - Android中没有'javax.realtime'。 JDK的类库具有'javax.realtime'的事实没有意义,因为在编译Android应用程序时,您没有使用JDK的类库。 – CommonsWare
感谢您的回答,您100%正确,我的错误。问题依赖于javolution(来自JScience库),因为它包含'javax.realtime'包。 –