我正在尝试构建和维护旧的应用程序,但我无法完成构建阶段。在我的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
}
但在尝试执行时遇到以下错误:
错误:任务':myApp'执行失败。 com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:org / apache / commons / io / CopyUtils.class
这几乎可以肯定是因为当我编译那个jar时,在我的外部库树的顶部,生成了这个:
为什么会发生这种情况,如何让它停止以便我可以完成构建?
答案 0 :(得分:13)
可以选择在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
错误地推动了gradle :main:dependencyInsight --configuration compile --dependency commons-io
您可以通过
查看依赖关系的来源 setRemoteSdp
答案 1 :(得分:5)
有一种简单的方法可以排除双重类。首先,如果您知道使用此代码,则需要找出导致该依赖项的依赖项:
compile('com.example:some-dependency:4.2') {
exclude module: 'commons-io'
}
答案 2 :(得分:5)
我知道这个帖子已经足够老了,但是如果有人面对这个问题,原因可能在于工件本身。
com.apache.commons:commons-io:XXX
已经moved到commons-io:commons-io:XXX
并且抓取旧工件可能会产生意外行为。
答案 3 :(得分:1)
项目中的其他库可能有commons-io依赖项导致重复条目。
看看这是否有帮助 - Gradle Duplicate Entry: java.util.zip.ZipException