首页 > 其他分享 >记一个 Duplicate class kotlin-stblib vs kotlin-stdlib-jdk7/8 编译问题引发的案例

记一个 Duplicate class kotlin-stblib vs kotlin-stdlib-jdk7/8 编译问题引发的案例

时间:2023-05-14 11:00:21浏览次数:57  
标签:stblib kotlin 1.8 Duplicate stdlib org jdk7 jetbrains

某天将项目 kotlin 版本升级到了 1.8.0 ,然后编译报错了,
Duplicate class kotlin-stblib vs kotlin-stdlib-jdk7/8
然后开始寻求解决方案...

Duplicate class kotlin-stblib vs kotlin-stdlib-jdk7/8

kotlin-stdlib

kotlin 1.8.0 基于 JVM 1.8 编译,不再支持 JVM 1.6 和 1.7。后续不用单独在build.gradle 依赖 kotlin-stdlib-jdk7 and kotlin-stdlib-jdk8。

If you have explicitly declared kotlin-stdlib-jdk7 and kotlin-stdlib-jdk8 as dependencies in your build scripts, then you should replace them with kotlin-stdlib.

解决 Duplicate class 的编译问题

  • 方法一
    使用 kotlin-bom 清单
implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
  • 方法二
    强制把 kotlin-stdlib-jdk7 和 kotlin-stdlib-jdk8 升级到 1.8.0
dependencies {
    constraints {
        add("implementation", "org.jetbrains.kotlin:kotlin-stdlib-jdk7") {
            version {
                require("1.8.0")
            }
        }
        add("implementation", "org.jetbrains.kotlin:kotlin-stdlib-jdk8") {
            version {
                require("1.8.0")
            }
        }
    }
}
  • 方法三
    手动移除 kotlin-stdlib,不推荐
dependencies {
     implementation("com.example:lib:1.0") {
      exclude group: "org.jetbrains.kotlin", module: "kotlin-stdlib"
  }
}

参考文档:https://kotlinlang.org/docs/gradle-configure-project.html#other-ways-to-align-versions

kotlin-bom 库版本清单表

  • org.jetbrains.kotlin » kotlin-stdlib

  • org.jetbrains.kotlin » kotlin-stdlib-jdk7

  • org.jetbrains.kotlin » kotlin-stdlib-jdk8

  • org.jetbrains.kotlin » kotlin-stdlib-js

  • org.jetbrains.kotlin » kotlin-stdlib-common

  • org.jetbrains.kotlin » kotlin-reflect

  • org.jetbrains.kotlin » kotlin-osgi-bundle

  • org.jetbrains.kotlin » kotlin-test

  • org.jetbrains.kotlin » kotlin-test-junit

  • org.jetbrains.kotlin » kotlin-test-junit5

  • org.jetbrains.kotlin » kotlin-test-testng

  • org.jetbrains.kotlin » kotlin-test-js

  • org.jetbrains.kotlin » kotlin-test-common

  • org.jetbrains.kotlin » kotlin-test-annotations-common

  • org.jetbrains.kotlin » kotlin-main-kts

  • org.jetbrains.kotlin » kotlin-script-runtime

  • org.jetbrains.kotlin » kotlin-script-util

  • org.jetbrains.kotlin » kotlin-scripting-common

  • org.jetbrains.kotlin » kotlin-scripting-jvm

  • org.jetbrains.kotlin » kotlin-scripting-jvm-host

  • org.jetbrains.kotlin » kotlin-scripting-ide-services

  • org.jetbrains.kotlin » kotlin-compiler

  • org.jetbrains.kotlin » kotlin-compiler-embeddable

  • org.jetbrains.kotlin » kotlin-daemon-client

具体版本对应关系:
kotlin-bom 库版本对应表查询:https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-bom

标签:stblib,kotlin,1.8,Duplicate,stdlib,org,jdk7,jetbrains
From: https://www.cnblogs.com/joy99/p/17398903.html

相关文章

  • Kotlin源码分析
    Compiler目录clisrc下面的是命令行下的编译入口,包括了jvm,重点是K2JVMCompiler执行编译过程和命令行接口CLITool|--CLICompiler|--K2JSCompiler|--K2JsIrComiler|--K2JVMCompiler|--K2MetadataCompilerCLITool|--doMain|--exec|--execImpl|--createArgument|--parseA......
  • 当我再次用Kotlin完成五年前已经通过Kotlin完成的项目后
     >近日来对Kotlin的使用频率越来越高,也对自己近年来写过的Kotlin代码尝试进行一个简单的整理.翻到了自己五年前第一次使用Kotlin来完成的一个项目([贝塞尔曲线](https://juejin.cn/post/6844903556173004807)),一时兴起,又用发展到现在的Kotlin和Compose再次完成了这个项......
  • kotlin学习
    kotlin方法一般不能接受空值,硬加能接受空值就必须加? funmethod(value:String?){println(value)}varnums=1..100表示1到100的数组varnums1=1until100表示1到99的数组for(ainnumsstep2){println(a)}会显示13579  step表示跳几个元素  nums.......
  • SQL: duplicate table
      MySQLcreatetablenew_tableselectc1,c2fromold_table[where1=2]loseindex,auto_incrementcreatetablenew_tablelikeold_tabletablestructureisexactlythesame,nodatainsertintonew_tableselect*fromold_tableinsertintonew_......
  • 当我第一次通过Kotlin和Compose来实现一个Canvas时, 我收获了什么?
    当我第一次通过Kotlin和Compose来实现一个Canvas时,我收获了什么?自从2019年Google推荐Kotlin为Android开发的首选语言以来已经经历了将近四年的时间,Compose的1.0版本也发布了将近2年的时间,Kotlin+Compose在现阶段的Android开发过程中还远远达不到主流的程度.我们是否应该......
  • Kotlin进阶指南 - 单元测试
    为了减少一些功能繁琐的测试流程,单元测试是提升开发效率的有效方式之一在早些年的时候我有记录过一篇Android使用单元测试,只不过当时更多的针对Java方面的单元测试;在使用Kotlin后,我发现单元测试有点不同,好像又没什么改变,故此直接记录一篇针对Java、Kotlin都可以使用的......
  • Kotlin基础入门 - 创建、兼容一个属于自己的Kotlin项目
    这应该是我年前就想记录的一个基础入门,但是因为一直比较忙,当时只是做了一个备忘草稿,正文就拖到了现在,趁着有时间,赶紧来帮助一下新入行的朋友…关于为何我把这篇Blog叫做创建、兼容一个属于自己的Kotlin项目?主要是因为在实际开发中会遇到以下俩种项目场景><从0-1的Kot......
  • Kotlin基础认知 - 为何Kotlin文件有的带.kt后缀,有的不带?
    有一天看到项目中的Kotlin类,有的有.kt后缀,有的没有,针对这个情况我就简单看了下,然后记录一波创建KotlinClass或KotlinFile创建Kotlinclass创建KotlinFile俩者区别展现形式外部展现内部展现延伸扩展、对向转换Class无后缀→File有后缀File有后......
  • Android结构优化 - Java、Kotlin项目结构分包
    随着Android中Java、Kotlin的混编开发场景越来越多,其中大多人都会将java文件和kt文件放在同一个资源文件夹下,在项目越来越大的情况下,我们进行代码查询、项目重构、优化都不太便捷,所以本篇主要记录通过kotlin分包、java分包来区分、整合java类和kotlin类因为目前项目为......
  • Kotlin实战基础 - 设置点击事件、Activity跳转、传值
    基础过度Kotlin基础入门-变量、方法、对象、继承、接口Kotlin实战基础-设置点击事件、Activity跳转、传值Kotlin实战基础-Activity、Fragment传递参数尚未完整,遇缺再补-点击事件Activity跳转Activity跳转+Intent传值点击事件点击事件是基础功......