怎么使用Homebrew在Mac上快速安装和切换JDK版本

苏见山
苏见山
发布时间:2026-10-11| 5人浏览过
原创
在Mac日常开发中,旧工程往往依赖Java 8或11,而新项目可能已经升级到Java 17或21。利用Mac下的包管理器Homebrew,我们可以把不同版本的JDK以标准结构安装在系统目录下,再借助macOS自带的/usr/libexec/java_home工具与Shell别名函数,实现终端里一条命令即可毫秒级切换JDK版本。

一、Mac多版本JDK的工作原理

很多初学者在Mac上手工去下载各个厂商的.dmg安装包,不仅更新麻烦,而且由于各个发行版的环境变量配置不一致,很容易引发$JAVA_HOME冲突或命令覆盖问题。

在macOS中,官方标准的多JDK安装目录位于/Library/Java/JavaVirtualMachines/。无论你装了多少个版本,苹果系统自带的内置工具/usr/libexec/java_home都会自动扫描该目录下的所有有效JDK,并能根据参数直接返回对应版本的物理绝对路径。当我们使用Homebrew的Cask机制安装由社区广泛推荐的Eclipse Temurin(前身为AdoptOpenJDK)时,它会自动将解压后的文件注册到这个标准路径下。这样一来,包管理负责安装卸载,系统命令负责查找识别,Shell负责环境变量绑定,整体结构非常清晰。

怎么使用Homebrew在Mac上快速安装和切换JDK版本
图 1:通过 Homebrew Cask 安装到系统级目录并通过 java_home 工具分发的体系架构

二、使用Homebrew快速安装指定JDK

在开始之前,确保你的Mac终端已经配置好Homebrew。主流的OpenJDK发行版中,Eclipse Temurin稳定性与兼容性表现优异,也是Homebrew官方仓库重点维护的JDK发行版。

首先,我们需要在终端中运行以下命令更新仓库索引,并查看当前官方源支持的Temurin具体版本:

# 更新Homebrew本地索引
brew update

# 检索可用的Temurin发行版本
brew search temurin

你会在终端输出中看到类似 temurin(通常代表当前最新长期支持LTS版本)、temurin@8、temurin@11、temurin@17、temurin@21 等包名。根据工程需求,执行安装命令。比如我们需要常用的 Java 8、Java 17 和 Java 21:

# 安装旧项目需要的 Java 8
brew install --cask temurin@8

# 安装当前主流 LTS Java 17
brew install --cask temurin@17

# 安装新项目选用的 Java 21
brew install --cask temurin@21
注意:因为JDK属于系统底层基础运行环境,安装时会将其放置到系统的 /Library/Java/JavaVirtualMachines/ 目录下,因此终端可能会弹出输入Mac开机密码(Sudo授权)的提示,在此输入密码并回车即可。
怎么使用Homebrew在Mac上快速安装和切换JDK版本
图 2:从查找软件包到完成环境确认的线性执行步骤

三、检查系统中已装的全部JDK

安装完成后,不需要去系统偏好设置找面板。直接在终端执行 macOS 提供的定位命令:

/usr/libexec/java_home -V

注意参数是大写的 -V。终端会输出当前系统中所有已被识别的JDK清单,示例结果如下:

Matching Java Virtual Machines (3):
    21.0.2 (arm64) "Eclipse Adoptium" - "OpenJDK 21.0.2" /Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home
    17.0.10 (arm64) "Eclipse Adoptium" - "OpenJDK 17.0.10" /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
    1.8.0_402 (arm64) "Eclipse Adoptium" - "OpenJDK 8" /Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home

最后一行输出的是当前系统默认激活的JDK路径。可以看到,刚才通过Homebrew安装的各个版本已经规范地排列在了系统目录下。

四、配置Shell环境,实现快速一键切换

如果在终端手动敲长长的路径去设置 export JAVA_HOME=...,每次切换都很低效。我们可以把切换逻辑抽象为简短的别名(alias)或自定义命令,写入你的Shell配置文件中。

macOS 目前默认的终端Shell是 Zsh(配置文件为 ~/.zshrc);如果你还在使用老版本的 Bash,配置文件则为 ~/.bash_profile。下面以标准的 ~/.zshrc 为例说明操作步骤:

  1. 使用文本编辑器打开配置文件(如使用vim或nano):
    nano ~/.zshrc
  2. 在文件末尾添加以下内容:
    # 设置系统默认启动的 JDK 版本(例如默认设为 Java 17)
    export JAVA_HOME=$(/usr/libexec/java_home -v 17)
    
    # 定义快捷切换函数
    alias jdk8="export JAVA_HOME=$(/usr/libexec/java_home -v 1.8); java -version"
    alias jdk17="export JAVA_HOME=$(/usr/libexec/java_home -v 17); java -version"
    alias jdk21="export JAVA_HOME=$(/usr/libexec/java_home -v 21); java -version"
  3. 保存文件后,在当前终端执行以下命令让配置立即生效:
    source ~/.zshrc
版本参数提示:注意上面的配置细节,Java 8在 java_home 命令中识别的版本号参数是 1.8,而更高版本的 Java 17、21 则直接传主版本数字 17、21 即可。

现在,当你在终端需要用 Java 8 编译旧模块时,只要直接敲入命令:

jdk8

终端会立即切换环境变量,并在下一行输出当前 Java 8 的版本信息。同理,输入 jdk21 就会毫秒级切回 Java 21。整个切换只作用于当前终端窗口,不会污染其他正在执行的构建进程。

怎么使用Homebrew在Mac上快速安装和切换JDK版本
图 3:Shell 函数调用与 JAVA_HOME 指向生效流程

五、遇到常见问题时的检查方案

在实际使用中,有两个环节最容易出现困惑:

  • 切换命令执行后,java -version 依然显示老版本:通常是因为你的 ~/.zshrc 中后面有写死的 export PATH="/some/fixed/jdk/bin:$PATH",导致固定的路径优先于系统动态寻址。排查方法是检查配置文件,确保由 $JAVA_HOME/bin 动态解析,或者直接只依赖 export JAVA_HOME=...。
  • 不需要某个JDK时如何彻底干净卸载:使用 Homebrew 安装的一大好处就是便于卸载。直接运行 brew uninstall --cask temurin@8,Homebrew 会自动删除 /Library/Java/JavaVirtualMachines/ 对应的文件夹,无需手动查找残余文件。

六、全流程总结清单

整个流程规范下来,其实只需要核心的几步。无论你是全新配置一台Mac,还是整理已有的开发环境,按照下面的清单核对即可快速就绪。

怎么使用Homebrew在Mac上快速安装和切换JDK版本
图 4:Mac JDK 管理完整工作流决策与检查总结矩阵

通过这套方案,你可以彻底告别手工到处下载安装包、环境变量配置混乱的烦恼。只要保持包管理与系统原生工具的分工配合,无论后续需要新增 JDK 25 还是清理弃用版本,都能在数秒内条理分明地完成。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。