安装CMAK执行sbt clean dist时遇Security Manager弃用错误求助
问题:安装CMAK执行
sbt clean dist触发SecurityManager弃用错误 执行构建命令:
sbt clean dist
收到如下报错:
java.lang.UnsupportedOperationException: The Security Manager is deprecated and will be removed in a future release at java.base/java.lang.System.setSecurityManager(System.java:425) at sbt.TrapExit$.installManager(TrapExit.scala:53) at sbt.StandardMain$.runManaged(Main.scala:127) at sbt.xMain$.run(Main.scala:67) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:578) at sbt.internal.XMainConfiguration.run(XMainConfiguration.scala:45) at sbt.xMain.run(Main.scala:39) at xsbt.boot.Launch$.$anonfun$run$1(Launch.scala:149) at xsbt.boot.Launch$.withContextLoader(Launch.scala:176) at xsbt.boot.Launch$.run(Launch.scala:149) at xsbt.boot.Launch$.$anonfun$apply$1(Launch.scala:44) at xsbt.boot.Launch$.launch(Launch.scala:159) at xsbt.boot.Launch$.apply(Launch.scala:44) at xsbt.boot.Launch$.apply(Launch.scala:21) at xsbt.boot.Boot$.runImpl(Boot.scala:78) at xsbt.boot.Boot$.run(Boot.scala:73) at xsbt.boot.Boot$.main(Boot.scala:21) at xsbt.boot.Boot.main(Boot.scala) [error] [launcher] error during sbt launcher: java.lang.UnsupportedOperationException: The Security Manager is deprecated and will be removed in a future release
当前环境版本:
- JDK: 19
- JRE: 1.8.0_202
- SBT: 1.8.2
原因分析
JDK 16及以上版本已彻底废弃SecurityManager,调用System.setSecurityManager()会直接抛出UnsupportedOperationException。而你使用的SBT 1.8.2仍依赖该废弃API,且环境中优先级更高的JDK 19触发了这个兼容性问题。
解决方案
方案1:降级JDK到兼容版本
SBT 1.8.x官方兼容的JDK版本为8、11、17,推荐选择JDK 11或17(兼顾兼容性与性能):
- 安装对应版本JDK
- 切换当前终端/系统的Java环境:
- Linux/macOS:用
update-alternatives、jenv或sdkman切换 - Windows:修改
JAVA_HOME和PATH环境变量指向新JDK
- Linux/macOS:用
方案2:添加SBT启动参数绕过检查
若暂时无法降级JDK,可执行命令时追加JVM参数:
sbt -J-Djava.security.manager=allow clean dist
或在项目根目录创建/修改sbtopts文件,添加全局参数:
-J-Djava.security.manager=allow
之后直接执行sbt clean dist即可。
方案3:升级SBT到适配新版本JDK的版本
SBT 1.9.x及以上版本已移除对SecurityManager的依赖,完全适配JDK 16+。升级到最新稳定版后再执行构建命令即可解决问题。
内容的提问来源于stack exchange,提问作者Dylan Bergmann
相关产品推荐
相关产品推荐

