JAVA_HOME必须指向JDK根目录,即包含bin、lib等子目录的顶层路径,不可含\bin或末尾斜杠;需通过where java(Windows)或readlink -f $(which java)(Linux/macOS)定位后向上推一级确认,并在环境变量中正确设置且重启终端验证。

JAVA_HOME 必须指向 JDK 的安装根目录,不能是 java 或 javac 可执行文件路径,也不能带 /bin 后缀。这是 Maven、Tomcat、Gradle 等工具正常运行的前提。
确认 JDK 实际根目录
先查出当前 java 命令的真实位置,再向上推一级得到 JDK 根路径:
- Linux/macOS:运行
readlink -f $(which java),例如输出/usr/lib/jvm/java-17-openjdk-amd64/bin/java,则根目录为/usr/lib/jvm/java-17-openjdk-amd64 - Windows:运行
where java,如返回C:\Program Files\Java\jdk-17.0.2\bin\java.exe,则根目录为C:\Program Files\Java\jdk-17.0.2 - 注意:该路径下必须存在
bin/、lib/、jre/(或jmods/)等标准子目录
设置 JAVA_HOME 值(关键细节)
变量值只写根目录,末尾不加斜杠,也不含 bin 或可执行文件名:
- ✅ 正确:
/usr/lib/jvm/java-17-openjdk-amd64或C:\Program Files\Java\jdk-17.0.2 - ❌ 错误:
/usr/lib/jvm/java-17-openjdk-amd64/bin/java、C:\Program Files\Java\jdk-17.0.2\bin、C:\Program Files\Java\jdk-17.0.2\(末尾斜杠可能引发兼容问题)
让配置持久生效
临时设置(仅当前终端有效)不解决实际问题,必须写入环境变量配置文件:
立即学习“Java免费学习笔记(深入)”;
- Linux/macOS(Bash/Zsh):编辑
~/.bashrc或~/.zshrc,追加两行:export JAVA_HOME=/your/jdk/root/pathexport PATH=$JAVA_HOME/bin:$PATH
然后运行source ~/.zshrc(或对应文件) - Windows:打开「系统属性 → 高级 → 环境变量」→ 在【系统变量】中新建变量:
变量名:JAVA_HOME
变量值:C:\Program Files\Java\jdk-17.0.2
再编辑【系统变量】中的Path,新增一项:%JAVA_HOME%\bin,并移到最上方
验证是否真正生效
务必新开一个终端或命令提示符窗口验证:
- Linux/macOS:
echo $JAVA_HOME应输出根路径;java -version和mvn -v都应成功执行 - Windows:
echo %JAVA_HOME%应显示根路径;where java应返回%JAVA_HOME%\bin\java.exe;mvn -v不报错 - 特别提醒:如果曾安装 Oracle Java,检查并删除 Path 中所有含
javapath的条目,否则会干扰 Maven 启动校验


















