【发布时间】: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.class 和 NotNull.class 是重复的,而且来自 org/intellij/lang/annotations/的类也是重复的>。
我添加了五个类后,它仍然崩溃。有没有更好的方法来解决这个问题,而不是手动添加导致这个异常的每个类?
更新 (02.02.16)
当我对这个问题进行了一些研究时,我发现对于我的项目,如果我删除了org.jetbrains:annotations-java5:15.0,相关的注释类是缺少的NonNls.class 和Contract.class。它们不在 kotlin-runtime 中,而是在 Jetbrains 注释依赖项中。不再次添加Jetbrains注解依赖怎么添加呢?
【问题讨论】:
-
kotlin-runtime仅捆绑 4 个注解:Nullable、NotNull、Mutable和ReadOnly。因此,如果您有其他注释冲突,它们可能来自另一个依赖项。 -
感谢您的回答@Ilya。我尝试的解决方案与
NotNull和Nullable一起使用。之后Flow.class是重复的。当我将Flow.class添加到列表中以覆盖annotations.jar 时,另一个类是问题所在。我认为问题仍然在于annotations-java5。 -
简单的方法是删除
compile 'org.jetbrains:annotations-java5:15.0',因为android-support库提供了自己的注释,所以尝试使用它们而不是从IntelliJ获得的。 -
请问你是怎么解决的。我也被这个问题困住了
标签: android gradle android-gradle-plugin kotlin