核心步骤是设置 JAVA_HOME
变量,并将其 bin
目录添加到系统的 PATH
变量中。
macOS 从 Catalina (10.15) 版本开始,默认的终端 Shell 从 bash
切换到了 zsh
。因此,你需要先确定你正在使用的 Shell,然后编辑对应的配置文件。
步骤一:查找 JDK 的安装路径
在 Mac 上,你不需要手动寻找 JDK 的路径。系统提供了一个很方便的工具 /usr/libexec/java_home
来动态获取当前最优的 JDK 路径。
-
打开终端 (Terminal)。
-
运行以下命令 来获取当前默认(通常是最高版本)的 JDK 主目录路径:
bash/usr/libexec/java_home
你会得到类似这样的输出,请复制它,下面会用到:
/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
优点 :使用这个命令而不是硬编码一个具体路径(如 .../jdk-17.jdk/...
),意味着当你未来升级或安装新的 JDK 时,这个环境变量配置无需修改,它会自动指向新的默认版本。
步骤二:确定你的 Shell 类型
在终端中输入以下命令:
bash
echo $SHELL
- 如果输出包含
/bin/zsh
,那么你正在使用 Zsh。 - 如果输出包含
/bin/bash
,那么你正在使用 Bash。
步骤三:编辑对应的 Shell 配置文件
根据上一步的结果,选择相应的操作。
情况 A:如果你使用 Zsh (macOS Catalina 及更新版本)
你需要编辑 ~/.zshrc
文件。
-
打开或创建配置文件 :
使用一个简单的文本编辑器(如
nano
)来编辑文件。bashnano ~/.zshrc
如果文件是新建的,窗口会是空白的,这很正常。
-
添加环境变量配置 :
将下面两行代码粘贴到文件的末尾。
bash# Setting JAVA_HOME for JDK export JAVA_HOME=$(/usr/libexec/java_home) export PATH="$JAVA_HOME/bin:$PATH"
- 第一行 :设置
JAVA_HOME
变量,它的值是java_home
命令的执行结果。 - 第二行 :将 JDK 的
bin
目录(包含了java
,javac
等命令)添加到系统PATH
的最前面,这样系统会优先使用你指定的 JDK 版本。
- 第一行 :设置
-
保存并退出:
- 按下
Control + O
(WriteOut) - 按
Enter
键确认文件名。 - 按下
Control + X
退出nano
编辑器。
- 按下
情况 B:如果你使用 Bash (macOS Mojave 及更早版本)
你需要编辑 ~/.bash_profile
文件。
-
打开或创建配置文件:
bashnano ~/.bash_profile
-
添加环境变量配置 :
同样,将下面两行代码粘贴到文件的末尾。
bash# Setting JAVA_HOME for JDK export JAVA_HOME=$(/usr/libexec/java_home) export PATH="$JAVA_HOME/bin:$PATH"
-
保存并退出:
- 按下
Control + O
- 按
Enter
- 按下
Control + X
- 按下
步骤四:让配置立即生效
你刚刚修改的配置文件只会在新的终端窗口中被加载。要让你当前的终端窗口也应用这些更改,执行以下命令:
-
如果你用的是 Zsh :
bashsource ~/.zshrc
-
如果你用的是 Bash :
bashsource ~/.bash_profile
或者,你也可以直接关闭当前的终端窗口并重新打开一个,效果是一样的。
步骤五:验证配置是否成功
在新的终端窗口或 source
过的窗口中,运行以下命令进行检查:
-
检查 JAVA_HOME:
bashecho $JAVA_HOME
预期输出 :应该会打印出你在第一步中看到的 JDK 路径,例如
/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
。 -
检查 Java 版本:
bashjava -version
预期输出:应该会显示你默认 JDK 的版本信息。
-
检查
java
命令的路径:bashwhich java
预期输出 :应该会显示
JAVA_HOME
路径下的bin/java
,例如/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home/bin/java
。
如果以上命令的输出都符合预期,那么恭喜你,JDK 环境变量已经成功配置!