Scala 2.13迁移后scala-json-rpc报io.circe.Printer无pretty方法错误
问题解决:
value pretty is not a member of io.circe.Printer 问题根源
这个错误源于新旧scala-json-rpc库依赖的Circe版本存在API变更:
- 旧版
shogowada/scala-json-rpc依赖的Circe(如0.13.x及更早)中,io.circe.Printer提供了pretty方法用于生成格式化JSON - 新版
nawforce/scala-json-rpc依赖的Circe(0.14.x及以上)移除了pretty方法,改用spaces2、spaces4或noSpaces等明确的格式化方法
排查与解决步骤
确认Circe版本
使用构建工具的依赖树命令查看项目实际依赖的Circe版本:- SBT项目执行:
sbt dependencyTree | grep circe - Maven项目执行:
mvn dependency:tree | grep circe
确认是否为0.14.x及以上版本。
- SBT项目执行:
修复代码中的直接调用
如果你的代码里直接调用了Printer.pretty,替换为对应方法:// 旧代码 import io.circe.Printer val printer = Printer.pretty // 新代码(匹配原pretty格式) import io.circe.Printer val printer = Printer.spaces2处理库内部的调用问题
若排查后发现自身代码无相关调用,说明是nawforce/scala-json-rpc库内部使用了旧Circe API:- 在构建配置中强制指定兼容的Circe版本(如0.13.0),注意确保该版本与Scala 2.13兼容
- 检查该库的仓库issue列表,查看是否已有用户反馈此问题,或提交新issue告知维护者
- 临时fork该库,修改内部的
Printer.pretty调用为新版API后,本地发布依赖使用
内容的提问来源于stack exchange,提问作者Ni3dzwi3dz
相关产品推荐
相关产品推荐

