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

SBT依赖引入触发NumberFormatException问题求助

问题根源

sbt 1.4.9的版本兼容性检查逻辑存在缺陷:当依赖版本号包含-分隔的长数字段时,会错误地将该数字段识别为Scala API版本(如2.13),并尝试将其转换为Int类型。但你的版本号中230823165626远超出Java Int的最大值(2147483647),因此触发NumberFormatException。这个问题仅在其他项目依赖当前项目时出现,因为此时sbt会启动跨版本依赖检查,独立运行项目时不会触发该逻辑。

解决方案

方案1:升级sbt版本(推荐)

该问题在sbt 1.5.x及以上版本中已被官方修复,只需升级sbt版本即可解决:

  1. 打开项目根目录下的project/build.properties文件
  2. 将sbt.version=1.4.9修改为稳定版本,例如:
sbt.version=1.5.8
  1. 重新执行sbt命令,让版本生效

方案2:调整内部库版本号格式

如果无法升级sbt,可以修改版本号格式,避免长数字段被误判为Scala版本:

  • 示例修改:将1.0.230823165626-1e552e4改为1.0-build230823165626-1e552e4或1.0-230823165626-1e552e4
  • 核心思路:在长数字段前添加非数字前缀,或者调整版本号的分隔符,破坏“类似Scala版本”的格式特征

方案3:禁用跨版本检查(不推荐)

通过配置关闭sbt的Scala版本兼容性检查,但可能隐藏其他真实的依赖兼容性问题:
在项目的build.sbt中添加以下配置:

ivyScala := ivyScala.value.map(_.copy(checkExplicit = false))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:44:53