2016-11-25 78 views
3

我添加科特林到gradle.build與依賴(科特林版本1.0.4):科特林gradle.build因爲拋出:ZipException重複

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 

我alrea DY嘗試:

我試過這個解決方案: Kotlin,Java,multidex,Dagger 2,Butterknife and Realm: transformClassesWithJarMergingForDebug: duplicate entry: org/jetbrains/annotations/NotNull.class 但它結束了,不僅Nullable.classNotNull.class是重複的,但也從組織/的IntelliJ /郎/註解類/

在我添加了五個類後,它仍然崩潰。有沒有更好的方法來擺脫這個問題,不要手動添加導致此異常的每個類?

UPDATE(16年2月2日)

由於我的工作問題了一下,我發現我的項目相關的註釋類NonNls.classContract.class被丟失,如果我刪除org.jetbrains:annotations-java5:15.0。它們不在kotlin-runtime中,而是在Jetbrains註釋依賴項中。如何在不添加Jetbrains註釋依賴關係的情況下添加它?

+0

'kotlin-runtime'只綁定4個註釋:'Nullable','NotNull','Mutable'和'ReadOnly'。所以如果你有其他註釋衝突,他們可能來自另一個依賴。 – Ilya

+0

感謝您的回答@Ilya。我試過的解決方案是使用'NotNull'和'Nullable'。之後'Flow.class'是重複的。正如我添加'Flow.class'到列表以覆蓋annotations.jar,另一個類是問題。我認爲這個問題仍然存在於'annotations-java5'中。 – alexfi

+0

簡單的方法是將Android編譯的org.jetbrains:annotations-java5:15.0''移除,因爲android-support庫提供了自己的註釋,所以嘗試使用它們從IntelliJ獲得的intead。 – piotrek1543

回答

0

嘗試使用,而不是:

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

這樣的:

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

支持Android默認提供了像科特林幾個最常用的註釋,因此,如果您使用basiscs像@NonNull@Nullable和庫@Null註釋你,刪除以上依賴項。

+0

謝謝你的回答! :)我需要的是NonNls註釋。正如我所看到的,它不包含在''com.android.support:support-annotations:+''中。 該項目太大而無法重構所有NonNls註解用法。 – alexfi

+0

刪除這兩個依賴項,並將導入更改爲'javax.annotation.NonNull' – piotrek1543

+0

我更新了我的問題:) – alexfi