記一個 Duplicate class kotlin-stblib vs kotlin-stdlib-jdk7/8 編譯問題引發的案例

某天將項目 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章