概览:为什么需要配置环境变量?
当你安装 Java 后,操作系统本身并不知道 java、javac (编译器) 等命令在哪里,环境变量就像是给系统设置的“快捷方式”或“寻路地图”,告诉系统在哪些目录下可以找到这些可执行程序。

最关键的环境变量是:
JAVA_HOME: 指向你的 Java 安装根目录的路径,很多基于 Java 的应用(如 Tomcat、Maven、IntelliJ IDEA)都需要这个变量来定位 JDK。PATH: 系统的可执行文件搜索路径,将%JAVA_HOME%/bin添加到PATH中,你就可以在终端的任何位置直接输入java命令,而无需输入完整路径。
第一步:安装 Java (JDK)
在配置之前,你必须先安装 Java Development Kit (JDK),推荐从官方渠道下载。
使用 Homebrew (推荐)
Homebrew 是 macOS 上最流行的包管理器,安装和管理软件非常方便。
-
安装 Homebrew (如果尚未安装): 打开终端 (Terminal),输入以下命令并按回车:
(图片来源网络,侵删)/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
根据提示操作即可。
-
使用 Homebrew 安装 JDK: Homebrew 提供了多个版本的 JDK,你可以选择安装一个最新的 LTS (长期支持) 版本,OpenJDK 17。
# 安装 OpenJDK 17 (推荐) brew install openjdk@17 # 如果你需要其他版本,JDK 21 # brew install openjdk@21
安装完成后,Homebrew 会提示你如何设置环境变量,这正是我们下一步要做的。
手动从 Oracle 官网下载
- 访问 Oracle Java SE Development Kit 下载页面 或 OpenJDK 官网。
- 下载适合你 macOS 架构 (Apple Silicon - arm64 或 Intel - x86_64) 的
.dmg安装包。 - 双击
.dmg文件,按照提示将 JDK 拖到Applications文件夹中。
第二步:配置环境变量
macOS 的环境变量配置文件通常位于你的用户主目录 () 下,我们将使用 zsh,因为它是 macOS Catalina (10.15) 及之后版本的默认 Shell,如果你仍在使用旧版的 bash,请将文件名 .zshrc 替换为 .bash_profile。

打开终端
在 "应用程序" -> "实用工具" 中找到 "终端" (Terminal) 并打开它。
找到 Java 安装路径
这一步至关重要,路径必须正确。
如果你使用的是 Homebrew 安装的 JDK:
Homebrew 会将 JDK 安装在 /opt/homebrew/ (Apple Silicon Mac) 或 /usr/local/ (Intel Mac) 目录下,你可以通过以下命令找到 openjdk@17 的实际安装路径:
# 对于 Apple Silicon (M1/M2/M3) Mac brew --prefix openjdk@17 # 对于 Intel Mac # brew --prefix openjdk@17
假设输出是 /opt/homebrew/opt/openjdk@17,那么你的 JAVA_HOME 就应该指向这个路径。
如果你手动安装的 JDK:
JDK 通常被安装在 /Library/Java/JavaVirtualMachines/ 目录下,你可以用 ls 命令查看:
ls /Library/Java/JavaVirtualMachines/
你会看到类似 jdk-17.jdk 这样的文件夹。JAVA_HOME /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home。
编辑配置文件
我们将使用 nano 这个简单易用的文本编辑器来编辑 .zshrc 文件。
nano ~/.zshrc
如果文件不存在,nano 会自动创建一个。
添加环境变量
在打开的文件中,将以下内容添加到文件末尾。请务必将 /path/to/your/java 替换成你上一步中找到的实际路径。
# Java Environment Configuration # 如果你使用 Homebrew 安装的,路径通常是下面这样 export JAVA_HOME="/opt/homebrew/opt/openjdk@17" # 或者对于 Intel Mac: export JAVA_HOME="/usr/local/opt/openjdk@17" # 如果你手动安装的,路径通常是下面这样 # export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home" # 将 Java 的 bin 目录添加到 PATH 中 export PATH="$JAVA_HOME/bin:$PATH"
解释:
export: 将变量的值导出,使其在当前 Shell 及其所有子进程中都可用。JAVA_HOME="...": 定义JAVA_HOME变量。PATH="$JAVA_HOME/bin:$PATH": 这行非常重要,它将$JAVA_HOME/bin(即 Java 可执行文件所在的目录) 添加到了PATH变量的最前面。$PATH代表了PATH变量原有的值,用冒号 分隔,这样做可以确保系统优先使用你配置的 Java 版本。
保存并退出
在 nano 编辑器中:
- 按
Control + X。 - 它会询问你是否保存,按
Y(代表 Yes)。 - 最后按
Enter确认文件名。
第三步:让配置生效并验证
让配置立即生效
新打开的终端窗口会自动加载 .zshrc 文件,但当前窗口不会,你需要执行以下命令来重新加载配置文件:
source ~/.zshrc
验证配置
让我们来检查一切是否设置正确。
-
检查
JAVA_HOME:echo $JAVA_HOME
如果配置成功,它会输出你设置的 Java 路径,
/opt/homebrew/opt/openjdk@17。 -
检查
PATH:echo $PATH
在输出的字符串中,你应该能看到你设置的 Java 路径/bin 出现在最前面。
-
检查 Java 版本:
java -version
javac -version
如果配置成功,这两个命令会分别显示你安装的 Java 版本信息,
openjdk version "17.0.9" 2025-10-17 OpenJDK Runtime Environment Temurin-17.0.9+7 (build 17.0.9+7) OpenJDK 64-bit Server VM Temurin-17.0.9+7 (build 17.0.9+7, mixed mode, sharing)这表示你已经成功在终端中使用 Java 了!
高级主题:管理多个 Java 版本
在实际开发中,你可能需要在不同项目间切换 Java 版本 (一个项目用 JDK 8,另一个用 JDK 17),手动修改 .zshrc 文件非常低效。
这里推荐一个神器:SDKMAN!
使用 SDKMAN! 管理 Java
-
安装 SDKMAN!
curl -s "https://get.sdkman.io" | bash
安装完成后,根据提示打开一个新的终端窗口或执行
source "$HOME/.sdkman/bin/sdkman-init.sh"。 -
安装多个 Java 版本
# 安装 JDK 17 sdk install java 17.0.9-tem # 安装 JDK 8 sdk install java 8.0.382-zulu
-
切换 Java 版本
# 查看所有已安装的 Java 版本 sdk list java # 切换到 JDK 17 sdk use java 17.0.9-tem # 切换到 JDK 8 sdk use java 8.0.382-zulu
使用 SDKMAN!,你无需手动配置
JAVA_HOME和PATH,它会自动为你处理好一切,这是专业 Java 开发者的首选方式。
常见问题排查 (FAQ)
Q: 我设置了 JAVA_HOME,但 java -version 仍然报错或显示的是旧版本。
A: 这通常是因为 PATH 中有其他路径优先级更高,检查 echo $PATH 的输出,看是否有其他 JDK 的 bin 目录在它前面,或者,你之前的终端窗口没有执行 source ~/.zshrc。
Q: 我应该用 .zshrc 还是 .bash_profile?
A: 对于 macOS Catalina (10.15) 及之后版本,默认 Shell 是 zsh,所以应该用 .zshrc,对于旧版本或你明确在使用 bash Shell 的情况,使用 .bash_profile,绝大多数情况下,.zshrc 是正确的选择。
Q: JAVA_HOME 的末尾需要斜杠 吗?
A: 不需要。JAVA_HOME 应该指向 JDK 的根目录,/opt/homebrew/opt/openjdk@17,而不是 /opt/homebrew/opt/openjdk@17/。
Q: 我用 IDE (如 IntelliJ IDEA) 开发,需要配置吗?
A: 是的,仍然需要,虽然 IDE 通常有自己的内部 JDK,但在运行、调试或使用 Maven/Gradle 构建项目时,它们会使用系统环境变量中的 JAVA_HOME 来查找编译器和运行时环境,配置好系统环境变量可以确保所有工具的一致性。
