java - 与 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"
解决方案
使用 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 就是这样。
推荐阅读
- performance - 性能工具(灯塔)在我的 Gatsby 网站上显示非常缓慢的“交互时间”。我该如何改进它?
- ibm-cloud - Traefikv2.3 出现“无法列出 *v1beta1.IngressClass: ingressclasses.networking.k8s.io”错误
- laravel - Laravel Blade 指令添加额外的引号
- mysql - 加载本地 infile 查询运行成功,但数据未上传到服务器表 Mysql 8.0
- excel - 单元格编辑期间 Application.OnTime 调用的宏的“正常”Excel行为是什么?
- html - 使用 div 在 CSS 元素周围创建空白区域
- python - 如何在 Python-3 的成员函数声明中使用类变量?
- mule - 在 Mule 4 中尝试从 ftp 注销时发现异常
- batch-file - 批量删除确切的文件扩展名
- php - laravel 的 rest api 中的事件处理