Skip to main content

Android java.util.zip.ZipException: duplicate entry

Android java.util.zip.ZipException: duplicate entry


Recently, I faced this build error while trying to integrate kotlin in our project.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesWithJarMergingForPreKitkatDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: org/intellij/lang/annotations/Identifier.class

As you can see, gradle is trying to add same entry two times, referenced by different dependencies.

So to figure out which are those two dependencies, I built the project with some extra options :

./gradlew assembleDebug --stacktrace --info | grep Identifier.class

This was the output:

addJar(/Users/yashasvi/.gradle/caches/modules-2/files-2.1/com.intellij/annotations/12.0/bbcf6448f6d40abe506e2c83b70a3e8bfd2b4539/annotations-12.0.jar): entry org/intellij/lang/annotations/Identifier.class

addJar(/Users/yashasvi/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar): entry org/intellij/lang/annotations/Identifier.class

As you can see, the culprit here is newly added dependency with group org.jetbrains.

Solution?

It’s simple. Just exclude the appropriate module from one of the dependencies. In my case, the problem was introduced when I was trying to add kotlin-std-lib-jre7 dependency from jetbrains.

So, I changed

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

to

compile ("org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"){
    exclude module: 'annotations'
}

Let me know in case of any doubts.

Cheers !


Comments

Post a Comment