Sau khi nâng cấp phiên bản Kotlin trong dự án lên 1.8.0, quá trình biên dịch gặp lỗi:
Duplicate class kotlin-stblib vs kotlin-stdlib-jdk7/8
Lỗi này xảy ra do sự xung đột giữa các thư viện chuẩn của Kotlin.
Thay đổi quan trọng từ Kotlin 1.8.0
Từ phiên bản 1.8.0, Kotlin chỉ còn hỗ trợ JVM 1.8 trở lên, đồng nghĩa với việc không cần khai báo riêng kotlin-stdlib-jdk7 hay kotlin-stdlib-jdk8 nữa. Thay vào đó, chỉ cần dùng kotlin-stdlib — thư viện này đã tích hợp đầy đủ API cho JDK 8.
Nếu bạn đang khai báo tường minh
kotlin-stdlib-jdk7hoặckotlin-stdlib-jdk8trong file build.gradle, hãy thay thế chúng bằngkotlin-stdlib.
Các cách giải quyết lỗi Duplicate class
Cách 1: Sử dụng Kotlin BOM để đồng bộ phiên bản
implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
Kotlin BOM (Bill of Materials) giúp quản lý phiên bản đồng nhất cho toàn bộ hệ sinh thái Kotlin, tránh xung đột.
Cách 2: Ép buộc nâng cấp phiên bản cụ thể
dependencies {
constraints {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7") {
version { strictly("1.8.0") }
}
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") {
version { strictly("1.8.0") }
}
}
}
Sử dụng strictly để đảm bảo Gradle chỉ sử dụng đúng phiên bản 1.8.0 cho các module gây xung đột.
Cách 3: Loại bỏ thủ công (không khuyến nghị)
dependencies {
implementation("com.example:lib:1.0") {
exclude group: "org.jetbrains.kotlin", module: "kotlin-stdlib"
}
}
Cách này có thể gây mất tính năng nếu thư viện phụ thuộc vào kotlin-stdlib.
Danh sách module trong 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
Xem chi tiết phiên bản tương ứng tại: https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-bom