Apple Silicon MacOS安装Oracle JDK 21并配置JDK 25版本切换

一、下载 Oracle JDK 21

打开 Oracle Java 官方下载页面:点击进入下载页面

找到 Java SE Development Kit 21,进入 macOS 下载选项。Apple Silicon Mac 应选择:macOS Arm 64 Compressed Archive

这是适用于 Apple Silicon Mac 的 ARM64 压缩包。本文采用手动解压和配置的方式安装,不使用 DMG 安装包,也不依赖 Homebrew。注意区分 Arm 64 和 x64,不要下载 Intel Mac 使用的 x64 版本。

二、安装 JDK 21

1. 解压安装包

下载完成后,打开终端,进入下载目录:

cd ~/Downloads

查看下载的 JDK 压缩包:

ls jdk-21*.tar.gz

执行解压命令:

tar -xzf jdk-21*.tar.gz

解压后会得到 JDK 目录,具体名称以实际下载的文件为准。

2. 移动到标准安装目录

macOS 常用的 JDK 安装目录为:

/Library/Java/JavaVirtualMachines/

创建目录:

sudo mkdir -p /Library/Java/JavaVirtualMachines

然后将解压得到的 JDK 目录移动过去。

例如,假设解压后得到的目录名为 jdk-21.0.x.jdk,应以实际目录名替换下面的示例:

sudo mv jdk-21*.jdk /Library/Java/JavaVirtualMachines/

注意: 上面的目录名仅为示例。如果解压后得到的目录名称不同,请先执行 ls 确认,再执行移动命令,不要直接照抄不匹配的目录名。

移动完成后,检查目录:

ls /Library/Java/JavaVirtualMachines/

3. 检查系统是否识别 JDK

执行:

/usr/libexec/java_home -V

如果输出中能看到 JDK 21 的版本和安装路径,说明 macOS 已识别该 JDK。如果没有识别到,需要检查目录层级是否正确,以及 JDK 是否放在标准目录中。

三、配置 JAVA_HOME

macOS 默认使用 zsh,可以通过 ~/.zshrc 配置 Java 环境变量。

1. 编辑配置文件

执行:

nano ~/.zshrc

在文件末尾添加:

# 默认使用 JDK 21
export JAVA_HOME=$(/usr/libexec/java_home -v 21)
export PATH="$JAVA_HOME/bin:$PATH"

这里使用 /usr/libexec/java_home -v 21 自动获取 JDK 21 的安装路径,无需手动填写完整目录。

2. 保存并生效

在 nano 编辑器中:

  1. 按 Control + O 保存。
  2. 按回车确认。
  3. 按 Control + X 退出。

然后执行:

source ~/.zshrc

3. 验证配置

执行以下命令:

java -version
javac -version
echo "$JAVA_HOME"
which java

检查 Java 和编译器是否显示 21 版本,以及 JAVA_HOME 是否指向正确的安装目录。

四、安装 JDK 25

如果需要使用 JDK 25,可以通过同一个 Oracle 官方下载页面获取。选择 JDK 25 下的 macOS Arm 64 Compressed Archive并安装。

安装完成后,执行:

/usr/libexec/java_home -V

确认系统已经识别 JDK 21 和 JDK 25。

五、切换 JDK 21 和 JDK 25

1. 临时切换版本

切换到 JDK 21:

export JAVA_HOME=$(/usr/libexec/java_home -v 21)
export PATH="$JAVA_HOME/bin:$PATH"

切换到 JDK 25:

export JAVA_HOME=$(/usr/libexec/java_home -v 25)
export PATH="$JAVA_HOME/bin:$PATH"

切换后执行:

java -version
echo "$JAVA_HOME"

即可检查当前使用的版本。需要注意,反复执行简单的 PATH 追加命令,可能导致旧的 Java 路径残留。

2. 配置快捷切换命令

如果经常切换版本,可以在 ~/.zshrc 中添加以下函数:

# 切换到 JDK 21
java21() {
  local jdk_home
  jdk_home=$(/usr/libexec/java_home -v 21) || return
  export JAVA_HOME="$jdk_home"
  export PATH="$JAVA_HOME/bin:$PATH"
  java -version
}

# 切换到 JDK 25
java25() {
  local jdk_home
  jdk_home=$(/usr/libexec/java_home -v 25) || return
  export JAVA_HOME="$jdk_home"
  export PATH="$JAVA_HOME/bin:$PATH"
  java -version
}

这两个函数会先确认目标 JDK 路径能够获取,再修改环境变量,避免目标版本不存在时直接覆盖 JAVA_HOME。

保存文件后执行:

source ~/.zshrc

以后在终端输入:

java21

即可切换到 JDK 21;输入:

java25

即可切换到 JDK 25。

以上切换只对当前终端会话生效。新开终端时,会重新加载 ~/.zshrc,默认使用其中配置的 JDK 21。

六、验证 JDK 架构

为了确认安装的是适用于 Apple Silicon 的 JDK,可以执行:

file "$JAVA_HOME/bin/java"

如果输出包含 arm64,说明该可执行文件支持 ARM64 架构。

如果同时包含 arm64 和 x86_64,说明它是通用二进制文件,同样支持原生 ARM64 运行。

如果只有 x86_64,则需要检查是否下载了 Intel 版本。

注意,file 检查的是可执行文件支持的架构,并不能单独证明当前 Java 进程实际使用的运行架构。

七、常见问题

问题解决方法
找不到 JDK 21执行 /usr/libexec/java_home -V 检查系统识别到的版本
java -version 显示的版本不正确检查 JAVA_HOME 和 PATH 配置
切换 JDK 后版本没有变化检查 which java 和 echo "$JAVA_HOME"
系统无法识别解压后的 JDK检查安装目录及目录层级是否正确
架构显示为 x86_64确认下载的是 macOS Arm 64 版本

通过这种方式,可以在同一台 Mac 上安装多个 JDK 版本,并根据项目需求灵活切换。

未经允许不得转载:编源视界 » Apple Silicon MacOS安装Oracle JDK 21并配置JDK 25版本切换