我在 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'
}
But that didn't help. So, that package is still exists in dependencies.
有什么方法可以在编译时从 jar 中排除包吗?
万一有人需要,问题就出在Javolution
依赖于JScience
图书馆。他们都有一个javax.runtime
包裹。排除Javolution
已经为我解决了这个问题。
compile ('org.jscience:jscience:4.3.1') {
exclude group: 'org.javolution', module: 'javolution'
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)