Android Studio解决kotlin-stdlib-jdk7和kotlin-stdlib-jdk8库版本冲突(Java示范)

在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!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值