sbt启动器期间出错:java.lang.UnsupportedOperationException:安全管理器已弃用,并将在未来版本中删除

bvk5enib  于 2023-05-05  发布在  Java
关注(0)|答案(1)|浏览(335)

所以我正在安装CMAK(Apache Kafka的集群管理器),当我运行命令时

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

救救我!

c3frrgcw

c3frrgcw1#

您似乎正在使用Java 19而不是Java 8 JRE运行。(Java 8不会出现此错误。
SBT中SecurityManager的弃用警告已作为SBT问题提出;参见https://github.com/sbt/sbt/issues/6558。但这是针对Java 17的。
在Java 18+中,Java运行时不只是给出一个弃用警告。SecurityManager类现在已更改为非功能性;见https://openjdk.org/jeps/411...在那里它谈到了Java 18及更高版本的计划。
因此,SBT 1.8.2及更早版本无法在Java 18及更高版本上运行。
您的选项包括:

  • 降级到Java 17(或者Java 11或Java 8)
  • 升级到SBT 1.9.0-RC 1或更高版本...其中SBT对SecurityManager的依赖性显然被移除。(上述问题已解决,已关闭。)

作为一般规则,我建议人们坚持使用LTS Java版本;即8、11和17(以及当它到达时的21)。非LTS版本将在6个月后下线,第三方软件供应商往往不会立即支持它们(如果有的话)。例如,SBT文档推荐Java 8、11或17。

相关问题