在Android Studio使用中,某次运行可能突然报错,类似于:(Duplicate class kotlin.internal jdk7……)
A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
> Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk8-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21)
Duplicate class kotlin.internal.jdk7.JDK7PlatformImplementations found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk7-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21)
Duplicate class kotlin.internal.jdk7.JDK7PlatformImplementations$ReflectSdkVersion found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk7-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21)
Duplicate class kotlin.internal.jdk8.JDK8PlatformImplementations found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk8-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21)
Duplicate class kotlin.internal.jdk8.JDK8PlatformImplementations$ReflectSdkVersion found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk8-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21)
Duplicate class kotlin.io.path.ExperimentalPathApi found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk7-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21)
Duplicate class kotlin.io.path.PathRelativizer found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk7-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21)
Duplicate class kotlin.io.path.PathsKt found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk7-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21)
Duplicate class kotlin.io.path.PathsKt__PathReadWriteKt found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk7-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21)
Duplicate class kotlin.io.path.PathsKt__PathUtilsKt found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk7-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21)
Duplicate class kotlin.jdk7.AutoCloseableKt found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk7-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21)
Duplicate class kotlin.jvm.jdk8.JvmRepeatableKt found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk8-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21)
Duplicate class kotlin.random.jdk8.PlatformThreadLocalRandom found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk8-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21)
Duplicate class kotlin.streams.jdk8.StreamsKt found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk8-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$1 found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk8-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$2 found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk8-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$3 found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk8-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$4 found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk8-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21)
Duplicate class kotlin.text.jdk8.RegexExtensionsJDK8Kt found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk8-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21)
Duplicate class kotlin.time.jdk8.DurationConversionsJDK8Kt found in modules kotlin-stdlib-1.8.0-Beta (org.jetbrains.kotlin:kotlin-stdlib:1.8.0-Beta) and kotlin-stdlib-jdk8-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21)
这种问题在Kotlin1.8.0以后的版本比较常见,即使在Java模式下,也可能发生。可以在Project Files视图下找到app->build gradle.kts文件(注意有两个build gradle,不要选错了)
也可以在Android视图下选择,选择后缀为(Model:app)的build gradle
在其中添加如下代码:
constraints {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.10"){because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")}
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.10"){because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")}
}
添加后效果如下:
点击Sync Now更新gradle ,重新启动app即可解决jdk7与jdk8不兼容的问题。
后记:当时为了寻找这个问题的答案花了两天的时间,在优快云、知乎、Stack Overflow以及chatgpt4o中查找了无数方案但始终失败。直到我在Youtube找到了Coffee Programmer的视频,在此感谢这位作者,并附上视频链接,有条件的朋友可以观看原视频:Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.10
Thank You!