java - Gradle:如何从 JScience jar 依赖项中排除 javax.realtime 包(多个 dex 定义)

标签 java android gradle dependencies jscience

我在我的 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'
}

但这并没有帮助。因此,该包仍然存在于依赖项中。 enter image description here

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

最佳答案

如果有人需要,问题出在 JScience 库的 Javolution 依赖项中。它们都有一个 javax.runtime 包。排除 Javolution 已经为我解决了这个问题。

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

关于java - Gradle:如何从 JScience jar 依赖项中排除 javax.realtime 包(多个 dex 定义),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23838362/

相关文章:

java - JaxB 无法转换为 java.lang.Integer

java - Android SQLite 使用数组更新列

java - 多次运行验收测试以找出成功率(java)

android - Fabric 和新gradle 2发布

java - 执行 org.eclipse.jetty :jetty-maven-plugin:9. 2.3.v20140905:run: javax/ws/rs/client/RxInvokerProvider 时缺少必需的类

java - 如何从 java 运行和控制 excel 实例

android - 周期由eclipse中的项目组成

android - 测量在 Android 应用程序上花费的时间

android - Android Studio如何构建所有Gradle buildTypes

java - 如何从bat文件运行中将成功的JUnit Cucumber场景数量保存到TeamCity变量