sbt 无法正确安装;自制程序更改 java 个版本
sbt won't install correctly; homebrew changing java versions
我刚刚进行了全新安装。 jdk 8(来自 adoptium.net)和 sbt(使用自制软件)在新成像的 mac 书中。无论如何,自制软件使用了 java 18,而 sbt 不起作用。
我按照此处的说明操作:https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Mac.html
在该页面上的 link 之后到 adoptium.net,我找到了 mac os.
唯一的 jdk 8
$ java -version
openjdk version "1.8.0_322"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (Temurin)(build 25.322-b06, mixed mode)
按照 sbt 页面上的说明,我使用了 homebrew...
$ brew install sbt
当我检查版本时,我看到了一个问题...
$ sbt about
[info] welcome to sbt 1.6.2 (Homebrew Java 18)
[info] loading project definition from /Users/KHinson1/project
[info] set current project to khinson1 (in build file:/Users/KHinson1/)
[info] This is sbt 1.6.2
[info] The current project is ProjectRef(uri("file:/Users/KHinson1/"), "khinson1") 0.1.0-SNAPSHOT
[info] The current project is built against Scala 2.12.15
Homebrew 使用 java 18 安装它?!如何清理它并使用我安装的 java 8?我在笔记本电脑上找不到 java 18。
我立即 运行 尝试用 sbt assembly
...
编译一个 fat jar 时遇到问题
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:416)
at sbt.TrapExit$.installManager(TrapExit.scala:52)
at sbt.StandardMain$.runManaged(Main.scala:52)
at sbt.xMain.run(Main.scala:28)
at xsbt.boot.Launch$.$anonfun$run(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(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
我知道这是一个 java 17+ 问题,来自这样的问题...
我过去曾使用自制软件来安装 sbt,但老实说我是 macs 的新手,不明白它是如何在我没有安装时使用 java 18 java18.
如何让 java 18 完全脱离我的 machine(我什至找不到它)并按预期使用 java 8 安装 sbt?
谢谢。
编辑
我试过使用 jenv,如下所述:
我点开jdk我安装
$ which java
/usr/bin/java
但是当我尝试
$ jenv add /usr/bin/java
/usr/bin/java is not a valid path to java installation
(edit 我已经竭尽全力尝试 SDKMAN,但我想知道我是否应该直接指向 /Library/Java/JavaVirtualMachines/temurin_???
?)
我尝试使用 brew install sbt@0.13
,它列出了 jdk 8 作为它的依赖项,但它只是不起作用(“找不到命令”)。我想要一个更新的 sbt,但我认为在 build.properties 中指定类似 sbt.version=1.3.6
的内容会强制 sbt 稍后升级。
我尝试按照 sbt 安装页面上的建议“扩展 zip”,但同样的事情(“找不到命令”),现在不管我将其扩展到哪里或如何更新路径。
编辑 2
我愿意尝试 sdkman,但此时我已经尝试了 installing/uninstalling 一些东西,但我不知道如何从我的 [=90= 中删除 java ]hine,我担心太多的竞争尝试会搞砸这一切。
我用的是java11,jenv,刚刚做了brew install sbt
,我这边没问题
$ java --version
openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)
$ brew reinstall sbt
...
==> Reinstalling sbt
==> Pouring sbt--1.6.2.all.bottle.tar.gz
==> Caveats
You can use $SBT_OPTS to pass additional JVM options to sbt.
Project specific options should be placed in .sbtopts in the root of your project.
Global settings should be placed in /opt/homebrew/etc/sbtopts
Homebrew's installation does not include `sbtn`.
==> Summary
/opt/homebrew/Cellar/sbt/1.6.2: 8 files, 3.7MB
$ sbt about
[info] Updated file /Users/rui/Downloads/sbt-test/project/build.properties: set sbt.version to 1.6.2
[info] welcome to sbt 1.6.2 (AdoptOpenJDK Java 11.0.11)
[info] loading project definition from /Users/rui/Downloads/sbt-test/project
[info] set current project to sbt-test (in build file:/Users/rui/Downloads/sbt-test/)
[info] This is sbt 1.6.2
[info] The current project is ProjectRef(uri("file:/Users/rui/Downloads/sbt-test/"), "sbt-test") 0.1.0-SNAPSHOT
[info] The current project is built against Scala 2.12.15
[info] Available Plugins
[info] - sbt.ScriptedPlugin
[info] - sbt.plugins.CorePlugin
[info] - sbt.plugins.Giter8TemplatePlugin
[info] - sbt.plugins.IvyPlugin
[info] - sbt.plugins.JUnitXmlReportPlugin
[info] - sbt.plugins.JvmPlugin
[info] - sbt.plugins.MiniDependencyTreePlugin
[info] - sbt.plugins.SbtPlugin
[info] - sbt.plugins.SemanticdbPlugin
[info] sbt, sbt plugins, and build definitions are using Scala 2.12.15
我建议两件事来解决问题:
- 结帐
PATH
事情
- 运行
brew doctor
据我所知,您可以在 brew 中安装特定的 java 版本。使用 brew cask install java8
(当然你需要先安装 cask,brew install cask
)。
@Ivan Stanislavciuc 推荐的 SDKMAN 非常棒。它管理 java 环境的方式真的很简单。
这是我从错误的开始中退出并让事情正常进行的过程。
# uninstall everything
brew uninstall sbt
brew uninstall jenv
cd /Library/Java/JavaVirtualMachines
sudo rm -rf <java installation>
# install sdkman
curl -s "https://get.sdkman.io" | bash
# select java version
# (I chose temurin jdk 8 which is formerly openj9;
# can't find hotspot AdoptOpenJdk anymore, is it gone?)
sdk list java
sdk install java 8.0.322-tem
sdk default java 8.0.322-tem
# install sbt
sdk install sbt
很简单。
我曾经使用过热点 adopt open jdk...但是我现在在任何地方都没有看到那个可用的。我看到热点仍然是 SDKMAN 说明中 sbt 安装页面上的推荐(.hs-adpt
是“热点采用开放 jdk”?)。但 temurin 是我认为的 openj9,它与 sbt 页面上的 adoptium.net link 匹配,所以现在我认为没问题。
我在更改 Mac 并重新安装 sbt 后遇到了您提到的相同问题。现在因为我没有得到执行这个(sudo sbt -java-home /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home assembly )到 运行 assembly 命令的确切解决方案。
我刚刚进行了全新安装。 jdk 8(来自 adoptium.net)和 sbt(使用自制软件)在新成像的 mac 书中。无论如何,自制软件使用了 java 18,而 sbt 不起作用。
我按照此处的说明操作:https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Mac.html
在该页面上的 link 之后到 adoptium.net,我找到了 mac os.
唯一的 jdk 8$ java -version
openjdk version "1.8.0_322"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (Temurin)(build 25.322-b06, mixed mode)
按照 sbt 页面上的说明,我使用了 homebrew...
$ brew install sbt
当我检查版本时,我看到了一个问题...
$ sbt about
[info] welcome to sbt 1.6.2 (Homebrew Java 18)
[info] loading project definition from /Users/KHinson1/project
[info] set current project to khinson1 (in build file:/Users/KHinson1/)
[info] This is sbt 1.6.2
[info] The current project is ProjectRef(uri("file:/Users/KHinson1/"), "khinson1") 0.1.0-SNAPSHOT
[info] The current project is built against Scala 2.12.15
Homebrew 使用 java 18 安装它?!如何清理它并使用我安装的 java 8?我在笔记本电脑上找不到 java 18。
我立即 运行 尝试用 sbt assembly
...
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:416)
at sbt.TrapExit$.installManager(TrapExit.scala:52)
at sbt.StandardMain$.runManaged(Main.scala:52)
at sbt.xMain.run(Main.scala:28)
at xsbt.boot.Launch$.$anonfun$run(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(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
我知道这是一个 java 17+ 问题,来自这样的问题...
我过去曾使用自制软件来安装 sbt,但老实说我是 macs 的新手,不明白它是如何在我没有安装时使用 java 18 java18.
如何让 java 18 完全脱离我的 machine(我什至找不到它)并按预期使用 java 8 安装 sbt?
谢谢。
编辑
我试过使用 jenv,如下所述:
我点开jdk我安装
$ which java
/usr/bin/java
但是当我尝试
$ jenv add /usr/bin/java
/usr/bin/java is not a valid path to java installation
(edit 我已经竭尽全力尝试 SDKMAN,但我想知道我是否应该直接指向 /Library/Java/JavaVirtualMachines/temurin_???
?)
我尝试使用 brew install sbt@0.13
,它列出了 jdk 8 作为它的依赖项,但它只是不起作用(“找不到命令”)。我想要一个更新的 sbt,但我认为在 build.properties 中指定类似 sbt.version=1.3.6
的内容会强制 sbt 稍后升级。
我尝试按照 sbt 安装页面上的建议“扩展 zip”,但同样的事情(“找不到命令”),现在不管我将其扩展到哪里或如何更新路径。
编辑 2
我愿意尝试 sdkman,但此时我已经尝试了 installing/uninstalling 一些东西,但我不知道如何从我的 [=90= 中删除 java ]hine,我担心太多的竞争尝试会搞砸这一切。
我用的是java11,jenv,刚刚做了brew install sbt
,我这边没问题
$ java --version
openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)
$ brew reinstall sbt
...
==> Reinstalling sbt
==> Pouring sbt--1.6.2.all.bottle.tar.gz
==> Caveats
You can use $SBT_OPTS to pass additional JVM options to sbt.
Project specific options should be placed in .sbtopts in the root of your project.
Global settings should be placed in /opt/homebrew/etc/sbtopts
Homebrew's installation does not include `sbtn`.
==> Summary
/opt/homebrew/Cellar/sbt/1.6.2: 8 files, 3.7MB
$ sbt about
[info] Updated file /Users/rui/Downloads/sbt-test/project/build.properties: set sbt.version to 1.6.2
[info] welcome to sbt 1.6.2 (AdoptOpenJDK Java 11.0.11)
[info] loading project definition from /Users/rui/Downloads/sbt-test/project
[info] set current project to sbt-test (in build file:/Users/rui/Downloads/sbt-test/)
[info] This is sbt 1.6.2
[info] The current project is ProjectRef(uri("file:/Users/rui/Downloads/sbt-test/"), "sbt-test") 0.1.0-SNAPSHOT
[info] The current project is built against Scala 2.12.15
[info] Available Plugins
[info] - sbt.ScriptedPlugin
[info] - sbt.plugins.CorePlugin
[info] - sbt.plugins.Giter8TemplatePlugin
[info] - sbt.plugins.IvyPlugin
[info] - sbt.plugins.JUnitXmlReportPlugin
[info] - sbt.plugins.JvmPlugin
[info] - sbt.plugins.MiniDependencyTreePlugin
[info] - sbt.plugins.SbtPlugin
[info] - sbt.plugins.SemanticdbPlugin
[info] sbt, sbt plugins, and build definitions are using Scala 2.12.15
我建议两件事来解决问题:
- 结帐
PATH
事情 - 运行
brew doctor
据我所知,您可以在 brew 中安装特定的 java 版本。使用 brew cask install java8
(当然你需要先安装 cask,brew install cask
)。
@Ivan Stanislavciuc 推荐的 SDKMAN 非常棒。它管理 java 环境的方式真的很简单。
这是我从错误的开始中退出并让事情正常进行的过程。
# uninstall everything
brew uninstall sbt
brew uninstall jenv
cd /Library/Java/JavaVirtualMachines
sudo rm -rf <java installation>
# install sdkman
curl -s "https://get.sdkman.io" | bash
# select java version
# (I chose temurin jdk 8 which is formerly openj9;
# can't find hotspot AdoptOpenJdk anymore, is it gone?)
sdk list java
sdk install java 8.0.322-tem
sdk default java 8.0.322-tem
# install sbt
sdk install sbt
很简单。
我曾经使用过热点 adopt open jdk...但是我现在在任何地方都没有看到那个可用的。我看到热点仍然是 SDKMAN 说明中 sbt 安装页面上的推荐(.hs-adpt
是“热点采用开放 jdk”?)。但 temurin 是我认为的 openj9,它与 sbt 页面上的 adoptium.net link 匹配,所以现在我认为没问题。
我在更改 Mac 并重新安装 sbt 后遇到了您提到的相同问题。现在因为我没有得到执行这个(sudo sbt -java-home /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home assembly )到 运行 assembly 命令的确切解决方案。