运行sbt报java.lang.NoClassDefFoundError: scala/reflect/internal/Trees如何解决
错误触发原因
该错误是sbt启动过程中类加载器无法找到Scala反射核心类scala.reflect.internal.Trees导致的,常见触发场景如下:
- 本地sbt依赖缓存损坏:下载Scala核心依赖时网络中断、文件被意外修改或删除,导致依赖包不完整
- 版本不兼容:项目指定的sbt版本和项目中配置的Scala版本存在冲突,sbt自身依赖的Scala版本被强制覆盖
- 全局sbt配置冲突:用户目录下的全局sbt配置、插件和当前项目的依赖要求不匹配
- 依赖源问题:使用的依赖镜像源缺失对应版本的Scala依赖包
解决方案
按以下步骤依次排查即可:
- 清理本地缓存
执行对应系统的命令删除损坏的全局缓存:- Linux/macOS:
rm -rf ~/.ivy2/cache ~/.sbt/boot ~/.cache/coursier- Windows:
手动删除用户目录下的.ivy2\cache、.sbt\boot、AppData\Local\Coursier\cache三个文件夹
- 校验版本兼容性
打开项目project/build.properties文件确认sbt版本,确保和项目Scala版本匹配:- sbt 1.3.x及以上版本依赖Scala 2.12.x系列,不要在项目构建配置中强制修改sbt依赖的Scala版本
- 若项目使用Scala 2.13.x,需确保sbt版本在1.4.x以上
- 清理项目本地编译产物
在项目根目录执行:rm -rf target project/target - 重新运行sbt命令,首次启动会自动重新下载完整的依赖包。
内容的提问来源于stack exchange,提问作者KindFrog
相关产品推荐
相关产品推荐

