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

安装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

方案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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:52:43