不使用构建工具时,如何解决kotlinx.serialization注解未处理警告?
解决无构建工具项目中kotlinx.serialization的编译器插件警告问题
你之前的操作只解决了运行时依赖的问题,但@Serializable注解需要Kotlin编译器插件在编译阶段生成序列化代码,这才是警告的核心原因——只加JAR库没用,必须手动配置IDE的Kotlin编译器插件。
核心问题说明
kotlinx.serialization不是纯运行时库,它依赖编译器插件处理@Serializable注解,自动生成序列化/反序列化的实现代码。你下载的JAR和添加的库只是运行时需要的核心类,但编译阶段的插件没配置,所以IDE会提示警告,且即使忽略警告,运行时也会因缺少序列化器抛出异常。
正确操作步骤(以IntelliJ IDEA为例)
确认下载的JAR完整性
- 你需要两个核心JAR文件,版本必须和项目使用的Kotlin版本完全一致:
kotlinx-serialization-core-x.x.x.jar(运行时核心库)kotlinx-serialization-compiler-plugin-x.x.x.jar(编译器插件)
- 比如项目用Kotlin 1.9.0,就下载对应1.9.0版本的两个JAR。
- 你需要两个核心JAR文件,版本必须和项目使用的Kotlin版本完全一致:
配置Kotlin编译器插件
- 打开IDE设置(
File > Settings或快捷键Ctrl+Alt+S) - 导航到
Build, Execution, Deployment > Compiler > Kotlin Compiler - 在Additional command line parameters输入框中添加:
把-Xplugin:/绝对路径/kotlinx-serialization-compiler-plugin-x.x.x.jar/绝对路径/替换成你实际存放插件JAR的路径,比如C:/libs/kotlinx-serialization-compiler-plugin-1.9.0.jar - 点击
Apply和OK保存设置
- 打开IDE设置(
验证配置
- 删除项目的编译输出目录(默认是
out),清理旧编译产物 - 重新编译项目,此时
@Serializable的警告应该消失 - 写个简单测试代码验证功能:
import kotlinx.serialization.Serializable import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json @Serializable data class User(val name: String, val age: Int) fun main() { val user = User("Alice", 30) println(Json.encodeToString(user)) } - 如果能正常输出
{"name":"Alice","age":30},说明配置成功
- 删除项目的编译输出目录(默认是
常见错误排查
- 版本不匹配:插件版本必须和项目Kotlin版本完全一致,否则会出现编译错误或警告
- 路径错误:确保插件JAR的路径是正确的绝对路径,相对路径可能因IDE工作目录问题失效
- 未重新编译:修改编译器参数后一定要清理旧编译文件再重新编译,否则旧的无序列化器的class文件会残留
内容的提问来源于stack exchange,提问作者Eitan
相关产品推荐
相关产品推荐

