JAVA_HOME必须指向JDK根目录(如C:\Program Files\Java\jdk-17.0.2),不可为bin子目录或java.exe路径;配错会导致Maven、Gradle等工具找不到编译器或运行时资源。

JAVA_HOME 必须指向 JDK 的根目录,不能是 bin 子目录,也不能是 java.exe 文件路径。配错会导致 Maven、Gradle、Tomcat 等工具找不到编译器或运行时资源。
确认 JDK 根路径
先确保已安装 JDK(不是仅 JRE)。打开终端或命令提示符,运行:
- Windows:
where javac→ 得到类似C:\Program Files\Java\jdk-17.0.2\bin\javac.exe,那么根路径就是C:\Program Files\Java\jdk-17.0.2 - macOS/Linux:
readlink -f $(which javac)或/usr/libexec/java_home -v 17(macOS)→ 去掉末尾的/bin/javac,保留上级目录
该目录下应有 bin、lib、jre 三个标准子文件夹。
Windows:通过系统设置永久配置
不能只用 set JAVA_HOME=...,那只是临时生效。正确做法:
立即学习“Java免费学习笔记(深入)”;
- 按
Win + R→ 输入sysdm.cpl→ 「高级」→「环境变量」 - 在「系统变量」区域点击「新建」:变量名填
JAVA_HOME,变量值填你确认的 JDK 根路径(如C:\Program Files\Java\jdk-17.0.2),不加尾部反斜杠 - 再编辑「系统变量」中的
Path,新增一行:%JAVA_HOME%\bin,并把它移到最上方 - 删掉 PATH 中所有含
javapath的条目(如C:\Program Files (x86)\Common Files\Oracle\Java\javapath),它们是 Oracle 安装器埋的干扰项
macOS/Linux:写入 shell 配置文件
根据你实际使用的 shell(zsh 是 macOS 默认,bash 常见于 Ubuntu)选择对应文件:
- macOS(zsh):编辑
~/.zshrc,末尾添加:export JAVA_HOME=$(/usr/libexec/java_home -v 17)export PATH=$JAVA_HOME/bin:$PATH - Linux(bash):编辑
~/.bashrc,添加:export JAVA_HOME=/usr/lib/jvm/default-runtime(替换为你的实际路径)export PATH=$JAVA_HOME/bin:$PATH - 保存后执行
source ~/.zshrc或source ~/.bashrc
验证是否成功
务必打开一个全新的终端窗口(旧窗口不会读新变量),依次运行:
-
echo $JAVA_HOME(macOS/Linux)或echo %JAVA_HOME%(Windows)→ 应显示你设的根路径,不含/bin或.exe -
java -version和javac -version→ 两个版本号需一致,且javac能运行才说明开发环境就绪 -
mvn -v(如有 Maven)→ 输出中 Java 版本应与上一步一致


















