首页 > 解决方案 > 与 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).
...

在深入挖掘时,位于https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/openjdk.rb的Homebrew公式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"

标签: javahomebrewapple-silicon

解决方案


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

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

当您使用 commandbrew 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 就是这样。


推荐阅读