mac配java环境变量核心是三步:选对配置文件(catalina起默认zsh,改~/.zshrc)、动态设java_home(用$/usr/libexec/java_home -v 17)、正确追加path(export path=$java_home/bin:$path);改完source ~/.zshrc后须同步验证java -version、echo $java_home、which java三者一致。

Mac 上配 Java 环境变量,核心就三件事:选对配置文件、动态设 JAVA_HOME、正确追加 PATH。从 macOS Catalina(10.15)起,默认 shell 是 zsh,所以别再往 .bash_profile 里硬塞了——它基本不生效。
确认当前 shell 类型
终端里执行:
echo $SHELL
如果输出是 /bin/zsh,就必须改 ~/.zshrc;输出 /bin/bash 才考虑 .bash_profile(新系统几乎不会出现)。
哪怕你以前配过 .bash_profile,只要没运行过 chsh -s /bin/bash 切回 bash,它就只是个闲置文件。
用 /usr/libexec/java_home 动态获取 JAVA_HOME
macOS 的 JDK 路径随版本、厂商(Temurin/Oracle/Zulu)、芯片架构(Intel/M1/M2/M3)变化极大,硬写路径如 /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home 一升级就崩。
正确做法是让系统自己找:
- 查所有已装 JDK:
/usr/libexec/java_home -V - 指定版本(推荐,防多版本冲突):
/usr/libexec/java_home -v 17或-v 21 - 在
~/.zshrc里写成:export JAVA_HOME=$(/usr/libexec/java_home -v 17)
PATH 必须把 JDK bin 放最前面
错误写法:export PATH=$PATH:$JAVA_HOME/bin —— 这会让系统自带的 /usr/bin/java(通常是过时旧版)永远优先。
正确写法(顺序+导出缺一不可):export PATH=$JAVA_HOME/bin:$PATH
注意:
• 漏掉 export,变量只在当前行生效;
• 别写成 export PATH="/path/to/java/bin",这会覆盖整个 PATH,导致 ls、cd 都失效。
保存后必须 source 并交叉验证
改完 ~/.zshrc 后,执行:
source ~/.zshrc
然后三者一起看,缺一不可:
-
java -version→ 实际运行的 JDK 版本 -
echo $JAVA_HOME→ 是否和上面一致 -
which java→ 路径是否为$JAVA_HOME/bin/java,不是/usr/bin/java
三者不一致,大概率是 PATH 顺序错、重复 source、或 IDE(如 VS Code 内置终端、iTerm2 非登录模式)没加载 .zshrc —— 这不是配置错,而是 shell 启动模式问题。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











