JDK17运行sbt clean compile报UseConcMarkSweepGC未识别问题
报错原因
UseConcMarkSweepGC是CMS垃圾回收器的启用参数,该回收器在JDK 9被标记为废弃,JDK 14及后续版本已被彻底移除,JDK 17环境下无法识别该参数。你检查的IDEA安装目录下的idea64.exe.vmoptions是IDEA进程本身的启动参数配置,和sbt进程启动时加载的JVM参数无关。
该参数的常见配置位置
按优先级从高到低排列,逐个排查即可找到配置来源:
- 项目本地配置:项目根目录下的
.jvmopts或.sbtopts文件,Windows环境下项目根目录可能存在sbtconfig.txt - 用户全局配置:Windows路径为
C:\Users\<当前系统用户名>\.sbt\jvmopts,Linux/macOS路径为~/.sbt/jvmopts - sbt安装目录默认配置:Windows下为sbt安装路径内的
conf\sbtconfig.txt,Linux/macOS为sbt安装目录/conf/sbtopts - IDEA集成sbt的专属配置:打开IDEA设置,依次进入
Build, Execution, Deployment > Build Tools > sbt,查看右侧面板里VM parameters输入框内的配置内容
解决步骤
- 在上述所有配置文件/配置项中搜索
UseConcMarkSweepGC字符串,找到对应配置行直接删除。 - (可选)如果需要显式指定JDK 17适配的垃圾回收器,可将原CMS配置替换为G1GC配置(JDK 17默认使用G1GC,不额外配置也可正常运行):
-XX:+UseG1GC
- 配置修改完成后,在终端执行
sbt -version验证sbt可以正常启动,无参数报错后再重新执行sbt clean compile即可。
内容的提问来源于stack exchange,提问作者Mandroid
相关产品推荐
相关产品推荐

