java - Android Gradle 编译 commons-io 在库树中创建副本

标签 java android gradle

我正在尝试构建和维护一个旧的工作应用程序,但我无法通过构建阶段。在我的 app/build.gradle 文件中有

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.apache.commons:commons-io:1.3.2'
    //some more libraries compiled as well
}

但在尝试执行时出现以下错误:

Error:Execution failed for task ':myApp'. com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: org/apache/commons/io/CopyUtils.class

这几乎可以肯定是因为当我编译那个 jar 时,在我的外部库树的顶部,生成了:

enter image description here

为什么会发生这种情况,我怎样才能让它停止以便完成构建?

最佳答案

有一个选项可以在 gradle 依赖解析级别上修复它

configurations.all {
    resolutionStrategy.dependencySubstitution {
        substitute module('org.apache.commons:commons-io:1.3.2') with module('commons-io:commons-io:1.3.2')
    }
}

冲突的原因是org.apache.commons:commons-io:1.3.2被错误推送了https://stackoverflow.com/a/37421794/624706

你可以看到依赖来自哪里

gradle :main:dependencyInsight --configuration compile --dependency commons-io

关于java - Android Gradle 编译 commons-io 在库树中创建副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35185512/

相关文章:

java - org.hibernate.AssertionFailure : null identifier @OneToOne relationship

android - 如何在 Mac 上运行 AVD 管理器

android - 强制 HTML5 应用程序处于横向模式

android - 导入gradle项目,android报错

Android Studio 使我的测试模块依赖于应用程序模块

java - Spring 电子邮件和换行字符

Java Future.isDone 返回 true,即使它不应该返回 true,这会停止程序进程

java - Pycrypto RSA PKCS1 OAEP SHA256 与 Java 的互操作性

android - 如何在 Android R8 中只关闭混淆?

android - androidLauncher 上带有 libgdx 和 Android Studio 的 java.lang.noclassdeffounderror