When I got up this morning, I was perplexed to see that our CI/CD builds were failing repeatedly with the following error:
Execution failed for task ':app:checkStagingReleaseDuplicateClasses'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
> Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10)
Duplicate class kotlin.internal.jdk7.JDK7PlatformImplementations found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.10)
Duplicate class kotlin.internal.jdk8.JDK8PlatformImplementations found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10)
Duplicate class kotlin.io.path.ExperimentalPathApi found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.10)
Duplicate class kotlin.io.path.PathRelativizer found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.10)
Duplicate class kotlin.io.path.PathsKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.10)
Duplicate class kotlin.io.path.PathsKt__PathReadWriteKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.10)
Duplicate class kotlin.io.path.PathsKt__PathUtilsKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.10)
Duplicate class kotlin.jdk7.AutoCloseableKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.10)
Duplicate class kotlin.jvm.jdk8.JvmRepeatableKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10)
Duplicate class kotlin.random.jdk8.PlatformThreadLocalRandom found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10)
Duplicate class kotlin.streams.jdk8.StreamsKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$1 found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$2 found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$3 found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$4 found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10)
Duplicate class kotlin.text.jdk8.RegexExtensionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10)
Duplicate class kotlin.time.jdk8.DurationConversionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10)
I looked for any problems relating to this but came up empty-handed. After making a few attempts, I discovered a workaround:
Your android/app/build.gradle
file has to be updated in order to align kotlin-stdlib
versions:
configurations.all {
resolutionStrategy {
eachDependency {
if ((requested.group == "org.jetbrains.kotlin") && (requested.name.startsWith("kotlin-stdlib"))) {
useVersion("1.6.10")
}
}
}
}
UPDATE (27-01-2023):
In the android/app/build.gradle
file, there is a better way to apply constraints for the two kotlin-stdlib-jdk7
and kotlin-stdlib-jdk8
modules:
dependencies {
constraints {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0") {
because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
}
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0") {
because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")
}
}
Top comments (26)
Thank you so much! Wasted like 3 hours on that!
Created an account just to thank you
great! this worked for me also
Thank you so much!!! I lost a lot of time with this problem. God bless you! 🚀🚀🚀
Just logged in to say thank you.
You're the best.
Thank you so much my friend! 100+ build failed yesterday can you explain us how did you find this?
Thanks!
Thanks you so much!
Thank you for the post. I meet the same errors and your first solution helped to fix them. I try to find a better sollution. I upgraded Kotlin to the latest version and it works fine.
Please give additional information about how you updated Kotlin in your project or on CI?
I am also getting a duplicate class error. Please help me to solve it.
Duplicate class com.facebook.jni.DestructorThread found in modules conceal-2.0.2.aar -> jetified-conceal-2.0.2-runtime (com.facebook.conceal:conceal:2.0.2) and fbjni-0.6.0.aar -> jetified-fbjni-0.6.0-runtime (com.facebook.fbjni:fbjni:0.6.0)
Duplicate class com.facebook.jni.DestructorThread$1 found in modules conceal-2.0.2.aar -> jetified-conceal-2.0.2-runtime (com.facebook.conceal:conceal:2.0.2) and fbjni-0.6.0.aar -> jetified-fbjni-0.6.0-runtime (com.facebook.fbjni:fbjni:0.6.0)
Duplicate class com.facebook.jni.DestructorThread$Destructor found in modules conceal-2.0.2.aar -> jetified-conceal-2.0.2-runtime (com.facebook.conceal:conceal:2.0.2) and fbjni-0.6.0.aar -> jetified-fbjni-0.6.0-runtime (com.facebook.fbjni:fbjni:0.6.0)
Duplicate class com.facebook.jni.DestructorThread$DestructorList found in modules conceal-2.0.2.aar -> jetified-conceal-2.0.2-runtime (com.facebook.conceal:conceal:2.0.2) and fbjni-0.6.0.aar -> jetified-fbjni-0.6.0-runtime (com.facebook.fbjni:fbjni:0.6.0)
Duplicate class com.facebook.jni.DestructorThread$DestructorStack found in modules conceal-2.0.2.aar -> jetified-conceal-2.0.2-runtime (com.facebook.conceal:conceal:2.0.2) and fbjni-0.6.0.aar -> jetified-fbjni-0.6.0-runtime (com.facebook.fbjni:fbjni:0.6.0)
Duplicate class com.facebook.jni.DestructorThread$Terminus found in modules conceal-2.0.2.aar -> jetified-conceal-2.0.2-runtime (com.facebook.conceal:conceal:2.0.2) and fbjni-0.6.0.aar -> jetified-fbjni-0.6.0-runtime (com.facebook.fbjni:fbjni:0.6.0)
Duplicate class com.facebook.jni.HybridClassBase found in modules conceal-2.0.2.aar -> jetified-conceal-2.0.2-runtime (com.facebook.conceal:conceal:2.0.2) and fbjni-0.6.0.aar -> jetified-fbjni-0.6.0-runtime (com.facebook.fbjni:fbjni:0.6.0)
Duplicate class com.facebook.jni.HybridData found in modules conceal-2.0.2.aar -> jetified-conceal-2.0.2-runtime (com.facebook.conceal:conceal:2.0.2) and fbjni-0.6.0.aar -> jetified-fbjni-0.6.0-runtime (com.facebook.fbjni:fbjni:0.6.0)
Duplicate class com.facebook.jni.HybridData$Destructor found in modules conceal-2.0.2.aar -> jetified-conceal-2.0.2-runtime (com.facebook.conceal:conceal:2.0.2) and fbjni-0.6.0.aar -> jetified-fbjni-0.6.0-runtime (com.facebook.fbjni:fbjni:0.6.0)
Duplicate class com.facebook.jni.IteratorHelper found in modules conceal-2.0.2.aar -> jetified-conceal-2.0.2-runtime (com.facebook.conceal:conceal:2.0.2) and fbjni-0.6.0.aar -> jetified-fbjni-0.6.0-runtime (com.facebook.fbjni:fbjni:0.6.0)
Duplicate class com.facebook.jni.MapIteratorHelper found in modules conceal-2.0.2.aar -> jetified-conceal-2.0.2-runtime (com.facebook.conceal:conceal:2.0.2) and fbjni-0.6.0.aar -> jetified-fbjni-0.6.0-runtime (com.facebook.fbjni:fbjni:0.6.0)
I am facing difficulty to solve it. Tried this below solution to solve it.
`configurations.all {
}`
But it throws next error, which related to conceal.
FATAL EXCEPTION: create_react_context
Process: com.propstream, PID: 9831
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/facebook/android/crypto/keychain/SharedPrefsBackedKeyChain;