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

如何从Scala 3项目中移除scala-library.jar依赖

解决Scala3项目中出现Scala2依赖及scala.Predef$找不到的问题

先定位Scala2依赖的来源

执行sbt show Runtime / managedClasspath,查看输出的完整依赖列表——哪怕dependencyTree没显示,这个命令能直接列出所有参与构建的依赖,帮你揪出是哪个插件或隐式依赖带进来的scala-library-2.13.15.jar。

强制排除Scala2依赖

在build.sbt里添加全局排除规则,彻底移除Scala2版本的scala-library:

// 全局排除所有scala-library(Scala2版本)依赖
excludeDependencies += "org.scala-lang" % "scala-library"

// 若全局排除有冲突,可给每个依赖单独排除
libraryDependencies ~= { deps =>
  deps.map(_.exclude("org.scala-lang", "scala-library"))
}

检查SBT插件兼容性

部分SBT插件(如打包类插件)可能默认依赖Scala2版本,去project/plugins.sbt确认所有插件版本兼容Scala3:

  • 比如sbt-assembly要使用0.15.0及以上版本;
  • sbt-native-packager需用1.9.0+版本;
  • 插件声明不要带Scala2后缀(比如_2.13),让SBT自动适配当前Scala3版本。

清理SBT缓存

旧缓存可能残留Scala2依赖,执行以下操作彻底清理后重新构建:

sbt clean
# 删除本地缓存目录
rm -rf ~/.sbt ~/.ivy2/cache ~/.coursier/cache

确认编译配置无兼容问题

确保build.sbt里的Scala版本配置完全指向Scala3:

scalaVersion := "3.6.3"
// 移除包含Scala2版本的crossScalaVersions配置
autoScalaLibrary := false
// 显式添加Scala3库依赖
libraryDependencies += "org.scala-lang" %% "scala3-library" % scalaVersion.value

关于scala.Predef$找不到的问题

Scala3的scala3-library本身包含兼容用的scala.Predef$对象,出现这个错误大概率是编译时混入了Scala2类路径,或运行时缺少正确的Scala3库。解决上述依赖问题后,重新编译打包,确保target/libs里只有scala3-library_3-3.6.3.jar,再用java -jar启动即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 19:50:08