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

将Scala从2.12.20升级到2.13.0时抛出SAXParseException

解决Scala 2.13.0升级时的XML解析错误

问题核心

升级Scala到2.13.0时,sbt的update阶段触发SAXParseException,提示XML实体display未以;结尾。且注释所有业务依赖后错误仍存在,说明问题不在业务依赖本身,而是sbt解析仓库元数据、插件配置或全局设置时遇到格式错误的XML。

排查修复步骤

1. 检查仓库URL的XML转义问题

sbt解析仓库元数据时,若仓库URL包含未转义的&字符(比如带参数的地址https://xxx.com/repo?a=1&display=2),会触发XML解析错误。

  • 核对build.sbt和plugins.sbt中的所有resolvers,将URL中的&替换为&
  • 临时注释所有自定义仓库,仅保留默认Maven Central,测试update是否正常,定位问题仓库

2. 排查插件兼容性与版本问题

部分老插件在配合Scala 2.13时,可能出现元数据解析异常:

  • 逐个注释plugins.sbt中的非核心插件(如scalastyle、swagger、flyway等),仅保留Play插件,逐步排查出有问题的插件
  • 升级插件到兼容Scala 2.13的版本:
    • scalastyle-sbt-plugin 1.0.0 → 1.5.0+
    • sbt-play-swagger 1.2.3 → 2.0.0+(适配Play 2.8.x和Scala 2.13)
    • flyway-sbt 7.4.0 → 适配sbt 1.3.x的最新稳定版

3. 清理sbt本地缓存

缓存的元数据可能损坏导致解析错误:

  • 执行sbt命令清理:
    sbt clean cleanFiles
    
  • 手动删除本地缓存目录:
    • Linux/macOS:~/.ivy2/cache、~/.sbt
    • Windows:C:\Users\<你的用户名>\.ivy2\cache、C:\Users\<你的用户名>\.sbt

4. 检查全局sbt配置

全局~/.sbt/1.0/目录下的配置文件可能存在问题仓库,临时重命名该目录,让sbt生成默认配置,测试是否恢复正常。

5. 升级sbt版本

sbt 1.3.13存在较久,可能存在XML解析相关bug,升级到sbt 1.9.x(兼容Scala 2.13和Play 2.8.x的稳定版):

  • 修改project/build.properties中的sbt.version=1.9.6(或最新稳定版)

关键提示

错误中的display实体几乎肯定来自某个仓库URL的未转义参数,重点排查自定义仓库地址的格式是否符合XML规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:55:20