jenv 在 MacOS 上找不到通过brew安装的java 17

laz*_*ead 25 java macos homebrew jenv java-17

我正在尝试使用以下命令将 JDK 17 安装到 macOS BigSur (11.5.2)brew install openjdk@17

> brew install openjdk@17
Running `brew update --preinstall`...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> Updated Formulae
Updated 3 formulae.

openjdk  is already installed but outdated (so it will be upgraded).
==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/manifests/17.0.1_1
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/blobs/sha256:75ee17c1331022fa8bf1e63f00fe903f23fe31d3a09021117d46b5f6ed1e26e1
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:75ee17c1331022fa8bf1e63f00fe903f23fe31d3a09021117d46b5f6ed1e26e1?se=2021-12-09T20%3A25%3A00Z&sig=NnB%2FO%2BGQF5ec6iqdKA4w29
######################################################################## 100.0%
==> Pouring openjdk--17.0.1_1.big_sur.bottle.tar.gz
==> Caveats
For the system Java wrappers to find this JDK, symlink it with
  sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

openjdk is keg-only, which means it was not symlinked into /usr/local,
because macOS provides similar software and installing this software in
parallel can cause all kinds of trouble.

If you need to have openjdk first in your PATH, run:
  echo 'export PATH="/usr/local/opt/openjdk/bin:$PATH"' >> ~/.zshrc

For compilers to find openjdk you may need to set:
  export CPPFLAGS="-I/usr/local/opt/openjdk/include"

Run Code Online (Sandbox Code Playgroud)

安装后jenv找不到java17的实例

jenv versions                                                                                                                               
  system
  1.8
  1.8.0.161
  1.8.0.181
* 11.0
  11.0.1
  15.0
  15.0.1
  openjdk64-11.0.1
  openjdk64-15.0.1
  oracle64-1.8.0.161
  oracle64-1.8.0.181
Run Code Online (Sandbox Code Playgroud)

laz*_*ead 48

发现需要使用命令在 jenv 中注册 java-17 dist:

jenv add /usr/local/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home 
Run Code Online (Sandbox Code Playgroud)

您的路径/usr/local/opt/openjdk@17/libexec/openjdk.jdk可以从您的brew安装日志(在线找到sudo ln -sfn /usr/local/opt/openjdk@17/libexec/openjdk.jdk ...)中获取,然后添加/Contents/Home

现在,它起作用了

jenv add /usr/local/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home 
Run Code Online (Sandbox Code Playgroud)

  • @RobertAlexander 在你的情况(苹果芯片)的自制软件安装中,“正确”的方法是 `jenv add /opt/homebrew/opt/openjdk@11` (参见 https://github.com/Homebrew/discussions/discussions /239#discussioncomment-162802 和 https://docs.brew.sh/FAQ#why-should-i-install-homebrew-in-the-default-location) (6认同)
  • 只是想补充一点,截至 2022 年 5 月 4 日,最新的 jdk 为 18,上述命令会将 jdk18 添加到您的 jenv 中。如果您特别需要 jdk17 - 执行以下操作: jenv add /usr/local/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home (3认同)
  • 万分感谢。在我的 Mac 上,brew 的 /opt/homebrew/Cellar/openjdk@11/11.0.16/libexec/openjdk.jdk/Contents/Home isntall java11 (3认同)
  • @RobertAlexander 我不建议链接到地窖 - 否则当您升级到新版本时它会损坏。 (3认同)