You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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等明确的格式化方法

排查与解决步骤

  1. 确认Circe版本
    使用构建工具的依赖树命令查看项目实际依赖的Circe版本:

    • SBT项目执行:sbt dependencyTree | grep circe
    • Maven项目执行:mvn dependency:tree | grep circe
      确认是否为0.14.x及以上版本。
  2. 修复代码中的直接调用
    如果你的代码里直接调用了Printer.pretty,替换为对应方法:

    // 旧代码
    import io.circe.Printer
    val printer = Printer.pretty
    
    // 新代码(匹配原pretty格式)
    import io.circe.Printer
    val printer = Printer.spaces2
    
  3. 处理库内部的调用问题
    若排查后发现自身代码无相关调用,说明是nawforce/scala-json-rpc库内部使用了旧Circe API:

    • 在构建配置中强制指定兼容的Circe版本(如0.13.0),注意确保该版本与Scala 2.13兼容
    • 检查该库的仓库issue列表,查看是否已有用户反馈此问题,或提交新issue告知维护者
    • 临时fork该库,修改内部的Printer.pretty调用为新版API后,本地发布依赖使用

内容的提问来源于stack exchange,提问作者Ni3dzwi3dz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 19:40:26