微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

与 Homebrew 一起安装时,OpenJDK 16 在 MacOS Apple Silicon 上显示为 17

如何解决与 Homebrew 一起安装时,OpenJDK 16 在 MacOS Apple Silicon 上显示为 17

想要在 MacOS(macOS Big Sur 11.0.1;Apple M1)上安装 openjdk 16。一切顺利,但显示的版本不匹配。显示 OpenJDK 17 但路径是 /opt/homebrew/Cellar/openjdk/16.0.1/。不确定我有 openjdk 16 还是 17?

步骤:

1. $brew update
2. $brew install openjdk

但是 $java -version 显示为 17

$ java -version
  openjdk version "17" 2021-09-14
  OpenJDK Runtime Environment Homebrew (build 17+0)
  OpenJDK 64-Bit Server VM Homebrew (build 17+0,mixed mode)

OR

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
  17 (arm64) "Homebrew" - "OpenJDK 17"
    /opt/homebrew/Cellar/openjdk/16.0.1/libexec/openjdk.jdk/Contents/Home
       /opt/homebrew/Cellar/openjdk/16.0.1/libexec/openjdk.jdk/Contents/Home

令人困惑的部分是 brew info openjdk 显示这是 Apple Silicon 的 openjdk 测试版(openjdk 17 预览版)。

$ brew info openjdk
openjdk: stable 16.0.1 (bottled) [keg-only]
Development kit for the Java programming language https://openjdk.java.net/ /opt/homebrew/Cellar/openjdk/16.0.1 (618 files,281.4MB)
Poured from bottle on 2021-05-31 at 23:05:51
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/openjdk.rb License: GPL-2.0-only with Classpath-exception-2.0
...
This is a beta version of openjdk for Apple Silicon (openjdk 17 preview).
...

深入挖掘,Homebrew 处的 https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/openjdk.rb 公式 openjdk 的部分代码实际上是在安装 17,但故意将版本显示为 16.0.1?>

if Hardware::cpu.arm?   
  # Temporarily use a openjdk 17 preview on Apple Silicon   
  # (because it is better than nothing)    
  url "https://github.com/openjdk/jdk/archive/refs/tags/jdk-17+24.tar.gz"    
  sha256 "9d1ea3fc63ce860e55a9be77f670b18fa7b7e5c9773dca3c70042403e1ee285c"   
  version "16.0.1"

解决方法

使用 Homebrew 在 Github 中重新发布答案表单讨论。

参考:https://github.com/Homebrew/discussions/discussions/1594#discussioncomment-816728

当您使用命令 brew info openjdk 时,即 brew 中的非版本化公式将始终是上游可用的最新版本。在本例中,ARM 为 17(作为预览),x86 为 16。

$brew info openjdk
openjdk: stable 16.0.1 (bottled) [keg-only]
Development kit for the Java programming language
https://openjdk.java.net/
/opt/homebrew/Cellar/openjdk/16.0.1 (618 files,281.4MB)
  Poured from bottle on 2021-05-31 at 23:05:51

在 M1/ARM 上,它实际上安装了 17 版,但文件夹将命名为“16”。是的,这可能是一个问题,但截至目前(2021 年 6 月),brew 就是这样。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。