IntelliJ中Kotlin调试表达式求值报错:找不到序列化器
IntelliJ调试Kotlin时「计算表达式」功能抛出kotlinx.serialization反序列化异常
问题详情
在IntelliJ中调试Kotlin代码,使用「计算表达式」功能求值表达式requestHeaders as Map<String, List<String>?>时,抛出以下异常:
org.jetbrains.kotlin.analyzer.CompilationErrorException : Could not load module in an attempt to find deserializer for symbol kotlinx.serialization/noCompiledSerializer|noCompiledSerializer(kotlin.String){}kotlinx.serialization.KSerializer<*>[0]
已尝试的操作:
- 在
gradle.build.kt中以implementation和runtime方式引入kotlinx.serialization相关依赖,问题未解决 - 改用Java风格表达式求值可正常运行,但希望使用Kotlin原生表达式完成调试
解决方法
1. 确保Kotlin序列化插件正确配置
仅引入依赖不够,必须在Gradle中启用Kotlin序列化插件,且插件版本需与项目Kotlin版本完全一致。在gradle.build.kt中添加:
plugins { kotlin("jvm") version "你的Kotlin版本号" // 示例:"1.9.20" kotlin("plugin.serialization") version "你的Kotlin版本号" }
2. 清理重建并同步项目
- 执行命令行清理构建:
./gradlew clean build - 重启IntelliJ,点击右上角「Sync Project with Gradle Files」按钮同步依赖
3. 调整求值表达式写法
避免直接强转,尝试分步求值或安全转换:
// 分步求值 val rawHeaders = requestHeaders rawHeaders as Map<String, List<String>?>
或者:
// 安全转换 requestHeaders as? Map<String, List<String>?>
4. 检查调试器序列化支持设置
打开File > Settings > Build, Execution, Deployment > Debugger > Data Views > Kotlin,确认「Enable kotlinx.serialization support」选项已勾选。
内容的提问来源于stack exchange,提问作者shubham jadhav
相关产品推荐
相关产品推荐

