【问题标题】:Kotlin gradle.build ZipException because of duplicatesKotlin gradle.build ZipException 因为重复
【发布时间】:2016-11-25 14:16:39
【问题描述】:

我将 Kotlin 添加到带有依赖项的 gradle.build(Kotlin 版本 1.0.4):

compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

我发现它与我的其他依赖项有冲突:

compile 'org.jetbrains:annotations-java5:15.0'

运行构建后,它会因 ZipException 而崩溃:

com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: org/jetbrains/annotations/Nullable.class

我已经尝试过的:

我尝试了这个解决方案: Kotlin,Java,multidex,Dagger 2,Butterknife and Realm: transformClassesWithJarMergingForDebug: duplicate entry: org/jetbrains/annotations/NotNull.class 但结果是,不仅 Nullable.classNotNull.class 是重复的,而且来自 org/intellij/lang/annotations/的类也是重复的>。

我添加了五个类后,它仍然崩溃。有没有更好的方法来解决这个问题,而不是手动添加导致这个异常的每个类?

更新 (02.02.16)

当我对这个问题进行了一些研究时,我发现对于我的项目,如果我删除了org.jetbrains:annotations-java5:15.0,相关的注释类是缺少的NonNls.classContract.class。它们不在 kotlin-runtime 中,而是在 Jetbrains 注释依赖项中。不再次添加Jetbrains注解依赖怎么添加呢?

【问题讨论】:

  • kotlin-runtime 仅捆绑 4 个注解:NullableNotNullMutableReadOnly。因此,如果您有其他注释冲突,它们可能来自另一个依赖项。
  • 感谢您的回答@Ilya。我尝试的解决方案与NotNullNullable 一起使用。之后Flow.class 是重复的。当我将Flow.class 添加到列表中以覆盖annotations.jar 时,另一个类是问题所在。我认为问题仍然在于annotations-java5
  • 简单的方法是删除compile 'org.jetbrains:annotations-java5:15.0',因为android-support库提供了自己的注释,所以尝试使用它们而不是从IntelliJ获得的。
  • 请问你是怎么解决的。我也被这个问题困住了

标签: android gradle android-gradle-plugin kotlin


【解决方案1】:

尝试使用代替:

compile 'org.jetbrains:annotations-java5:15.0'

这个:

compile 'com.android.support:support-annotations:+'

默认情况下,Android 支持库会像 Kotlin 一样提供一些最常用的注解,因此如果您使用 @NonNull@Nullable@Null 等基础类注解,请移除上述依赖项。

【讨论】:

  • 感谢您的回答! :) 对我来说必要的是 NonNls 注释。如我所见,它不包含在'com.android.support:support-annotations:+' 中。项目太大,无法重构所有 NonNls 注释用法。
  • 删除两个依赖项并将导入更改为 'javax.annotation.NonNull'
猜你喜欢
  • 2023-03-27
  • 2017-02-08
  • 1970-01-01
  • 2018-03-08
  • 2017-02-18
  • 1970-01-01
  • 1970-01-01
  • 2016-01-03
  • 1970-01-01
相关资源
最近更新 更多