Mac上使用brew安装jdk17

D. *_*Joe 39 java macos homebrew

我正在尝试使用brew安装jdk17,同时还安装了java8、java11和java16。

为了安装 8、11 和 16,我运行了:

brew tap adoptopenjdk/openjdk

brew install --cask adoptopenjdk8

brew install --cask adoptopenjdk11

brew install --cask adoptopenjdk16
Run Code Online (Sandbox Code Playgroud)

不过17版好像没有appacyopenjdk。

我可以安装 17

brew install openjdk
Run Code Online (Sandbox Code Playgroud)

但如果我跑

/usr/libexec/java_home -v 17
Run Code Online (Sandbox Code Playgroud)

它返回

/Library/Java/JavaVirtualMachines/adoptopenjdk-16.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

并且没有 17 的条目

/Library/Java/JavaVirtualMachines/
Run Code Online (Sandbox Code Playgroud)

我在用

alias java8="unset JAVA_HOME; export JAVA_HOME=`/usr/libexec/java_home -v 1.8`; java -version"
alias java11="unset JAVA_HOME; export JAVA_HOME=`/usr/libexec/java_home -v 11`; java -version"
alias java16="unset JAVA_HOME; export JAVA_HOME=`/usr/libexec/java_home -v 16`; java -version"
alias java17="unset JAVA_HOME; export JAVA_HOME=`/usr/libexec/java_home -v 17`; java -version"
Run Code Online (Sandbox Code Playgroud)

管理 java 版本,如果没有 java 17 的条目,我无法切换到它。

谢谢。

Goa*_*aul 63

所以,没有人在这上面浪费更多时间,要安装 temurin17,执行:

brew tap homebrew/cask-versions
brew install --cask temurin17
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,对于像我这样的 Homebrew 新手来说,第一个命令会下载可用版本。否则,Brew 只知道最新的信息,并且会显示“Cask 'temurin17' 不可用”之类的信息。 (3认同)

Nic*_*ist 30

更新!

该项目的新网站名为 Adoptium(感谢 @MarkRotteveel)。在 Homebrew 中,安装新 AdoptOpenJDK 的软件包此处名为 temurin。您需要运行的只是:

brew install --cask temurin17
Run Code Online (Sandbox Code Playgroud)

或获取最新版本

brew install --cask temurin
Run Code Online (Sandbox Code Playgroud)

  • 我必须运行“brew tap homebrew/cask-versions”才能使其正常工作。也许这对于那些熟悉自制程序的人来说是显而易见的,但我必须深入挖掘一下。 (16认同)
  • AdoptOpenJDK 项目已重命名为 Adoptium(如答案中链接的横幅所示),现在可以在 https://adoptium.net/ 上找到。 (5认同)
  • 当前安装版本 18。对于 17,通过点击“homebrew/cask-versions”使用“temurin17” (3认同)

Jam*_*oud 12

谢谢大家,这非常有帮助。我还必须对我的$HOME/.zshrc文件进行以下更改

export PATH="/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home/bin/:$PATH"
Run Code Online (Sandbox Code Playgroud)

我还在我的系统上保留了旧的acceptopenjdk8,但注释掉了这一行以$HOME/.zshrc从我的路径中删除java 8,这样当我运行java命令时它就不会被执行

# export PATH="/usr/local/opt/openjdk@8/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

通过我运行的这两个更改来执行我的 PATH

source ~/.zshrc
Run Code Online (Sandbox Code Playgroud)

在此之前,我运行了这 2 个命令来安装 java 17

brew tap homebrew/cask-versions
brew info temurin17
brew install temurin17
Run Code Online (Sandbox Code Playgroud)

现在(截至 2023 年 4 月 12 日)当我跑步时

java -version
Run Code Online (Sandbox Code Playgroud)

表明

openjdk version "17.0.6" 2023-01-17
OpenJDK Runtime Environment Temurin-17.0.6+10 (build 17.0.6+10)
OpenJDK 64-Bit Server VM Temurin-17.0.6+10 (build 17.0.6+10, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)

在此之前java -version显示

openjdk version "1.8.0_362"
OpenJDK Runtime Environment (build 1.8.0_362-bre_2023_01_22_03_32-b00)
OpenJDK 64-Bit Server VM (build 25.362-b00, mixed mode)
Run Code Online (Sandbox Code Playgroud)

brew info temurin17
Run Code Online (Sandbox Code Playgroud)

命令显示了brew“知道”的内容temurin17以及我在安装它之前得到的输出

==> temurin17: 17.0.6,10
https://adoptium.net/
Not installed
From: https://github.com/Homebrew/homebrew-cask-versions/blob/HEAD/Casks/temurin17.rb
==> Name
Eclipse Temurin Java Development Kit
==> Description
JDK from the Eclipse Foundation (Adoptium)
==> Artifacts
OpenJDK17U-jdk_x64_mac_hotspot_17.0.6_10.pkg (Pkg)
Run Code Online (Sandbox Code Playgroud)

brew仅供参考,如果您的 mac 上尚未安装,只需运行

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Run Code Online (Sandbox Code Playgroud)