Kotlin scratch文件版本不兼容,无法使用kotlinx_serialization
问题根源
你遇到的元数据版本不兼容错误,核心是Kotlin版本、kotlinx-serialization插件版本、序列化依赖版本三者不匹配:
项目Kotlin版本为1.8.22,但序列化插件用了1.9.20(高于项目Kotlin版本),导致编译生成的元数据是1.9.0版本,而项目运行环境只能识别到1.7.1版本的元数据,从而触发冲突。
修复步骤
1. 统一序列化插件与Kotlin版本
在build.gradle.kts中,将org.jetbrains.kotlin.plugin.serialization插件版本修改为与项目Kotlin版本完全一致的1.8.22:
plugins { id("org.jetbrains.kotlin.plugin.serialization") version "1.8.22" // 保留其他已有插件(如spring-boot等) }
2. 确保项目Kotlin版本配置一致
检查build.gradle.kts中的Kotlin版本设置,确认语言版本和工具链匹配:
kotlin { jvmToolchain(17) // 与你的JDK17对应 sourceSets { all { languageSettings { languageVersion = "1.8" // 与项目Kotlin版本1.8.22对应 } } } }
3. 调整序列化依赖版本(可选但稳妥)
kotlinx-serialization-json的版本需与Kotlin版本兼容,Kotlin 1.8.x推荐使用1.5.3版本(也可兼容1.6.0,但版本匹配更稳妥):
dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.3") // 其他依赖... }
4. 同步IDEA的Kotlin插件版本
打开IntelliJ IDEA,进入Settings -> Languages & Frameworks -> Kotlin,确保IDEA的Kotlin插件版本为1.8.22(与项目版本一致),避免scratch文件使用高版本插件编译。
5. 清理并重新构建项目
- 终端执行
./gradlew clean build清理旧编译产物并重新构建 - 在IDEA中点击
File -> Sync Project with Gradle Files同步配置
验证修复
创建Kotlin scratch文件,测试序列化代码:
import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json @Serializable data class User(val name: String, val age: Int) fun main() { val user = User("Jerry", 25) val json = Json.encodeToString(user) println(json) }
如果能正常输出JSON字符串,说明版本兼容问题已解决。
内容的提问来源于stack exchange,提问作者Jerry
相关产品推荐
相关产品推荐

