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

IntelliJ Gradle插件编译Scala报sbt.internal.io.Milli初始化错误

问题根因

这个报错和项目代码、Gradle配置无关,是IntelliJ构建时的类加载冲突导致的:
IntelliJ调用内置Gradle插件执行构建时,会自动把自身Scala插件携带的sbt、zinc编译依赖注入到Gradle守护进程的类加载路径,且这部分依赖的加载优先级高于项目通过Gradle拉取的依赖。当IntelliJ Scala插件内置的sbt.io版本和项目Gradle Scala插件依赖的sbt版本不兼容时,就会触发sbt.internal.io.Milli类静态初始化失败。终端直接执行./gradlew时不会加载IntelliJ注入的额外依赖,所以构建可以正常跑通。

修复步骤

按以下顺序操作,绝大多数同类问题都能解决:

  • 调整Gradle运行配置:打开Settings > Build, Execution, Deployment > Build Tools > Gradle,把Build and run using、Run tests using两个选项从默认的IntelliJ IDEA改成Gradle,强制所有构建流程走Gradle原生链路,不让IntelliJ用自身的编译逻辑接管构建。
  • 彻底清理缓存:不要只用IDEA界面上的Invalidate Caches功能,它的清理范围不全:
    1. 关闭IntelliJ,删除项目根目录下的.idea文件夹,以及所有子模块下的build、.out编译输出目录
    2. 删除IntelliJ全局缓存目录,不同系统对应路径:
      • macOS:~/Library/Caches/JetBrains/IntelliJIdea<当前安装的IDEA版本号>
      • Windows:%LOCALAPPDATA%\JetBrains\IntelliJIdea<当前安装的IDEA版本号>\caches
      • Linux:~/.cache/JetBrains/IntelliJIdea<当前安装的IDEA版本号>
    3. 重新打开IntelliJ导入项目
  • 回退Scala插件版本:如果上面两步操作后还是报错,说明当前Scala插件版本和你用的Gradle 6.6.1版本不兼容。打开Settings > Plugins找到Scala插件,点击齿轮图标选择回退,降到2023.1.x系列的稳定版即可——新版本Scala插件内置的sbt依赖版本太高,和Gradle 6.x自带的Scala编译链存在已知兼容性问题。
  • 兜底配置:打开Gradle工具窗口的设置页,勾选Do not build IDEA project classes automatically,重启IDEA后先在终端执行一次./gradlew clean build确认构建正常,再从IDEA面板触发构建。
报错核心堆栈参考
Task :dataset:compileScala
## Exception when compiling 133 sources to /Users/jh/0_code/alpine-knowledge/alpine-dataset/.out/classes/scala/main
java.lang.NoClassDefFoundError: Could not initialize class sbt.internal.io.Milli$
sbt.io.IO$.$anonfun$getModifiedTimeOrZero$1(IO.scala:1373)
scala.runtime.java8.JFunction0$mcJ$sp.apply(JFunction0$mcJ$sp.java:23)
sbt.internal.io.Retry$.liftedTree2$1(Retry.scala:38)
sbt.internal.io.Retry$.impl$1(Retry.scala:38)
sbt.internal.io.Retry$.apply(Retry.scala:52)
sbt.internal.io.Retry$.apply(Retry.scala:24)
sbt.io.IO$.getModifiedTimeOrZero(IO.scala:1373)
sbt.internal.inc.caching.ClasspathCache$.fromCacheOrHash$1(ClasspathCache.scala:44)
sbt.internal.inc.caching.ClasspathCache$.$anonfun$hashClasspath$1(ClasspathCache.scala:53)
scala.collection.parallel.mutable.ParArray$Map.leaf(ParArray.scala:659)
scala.collection.parallel.Task.$anonfun$tryLeaf$1(Tasks.scala:53)
scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
scala.util.control.Breaks$$anon$1.catchBreak(Breaks.scala:67)
scala.collection.parallel.Task.tryLeaf(Tasks.scala:56)
scala.collection.parallel.Task.tryLeaf$(Tasks.scala:50)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:42:29