Gradle:如何从JScience jar依赖关系中排除javax.realtime包(Multiple dex define)

我在我的Android应用程序中使用Gradle,我想使用JScience库依赖项。 我已经这样添加库了:

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库。 我已经尝试在这个Gradle中从Jscience库中删除这个包:

 sourceSets { main { java { exclude 'javax/realtime/**' } } } configurations { all*.exclude group: 'javax.realtime' } 

但是这并没有帮助。 所以,这个包依然存在于依赖中。 在这里输入图像说明

有没有什么办法可以在编译时从jar中排除一个包?

Solutions Collecting From Web of "Gradle:如何从JScience jar依赖关系中排除javax.realtime包(Multiple dex define)"

如果有人需要,问题是来自JScience库的Javolution依赖。 他们都做了一个javax.runtime包。 排除Javolution已经解决了我的问题。

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