JAVA_HOME必须指向JDK根目录(含bin、lib、jre的父目录),不可指向jre或bin子目录;PATH需包含%JAVA_HOME%\bin或$JAVA_HOME/bin;须用java -version和javac -version双重验证;IDE需独立配置并重启。

JAVA_HOME 应该指向 JDK 根目录,不是 jre 或 bin
很多人把 JAVA_HOME 设成 C:\Program Files\Java\jdk-17.0.1\jre 或 .../bin,这会导致 Maven、Gradle、Tomcat 等工具启动失败,报错类似 The JAVA_HOME environment variable is not defined correctly。
正确路径必须是 JDK 安装的最外层目录,即包含 bin、lib、jre 子目录的那个文件夹:
-
JAVA_HOME = C:\Program Files\Java\jdk-17.0.1✅ -
JAVA_HOME = /usr/lib/jvm/java-17-openjdk-amd64✅(Linux/macOS) -
JAVA_HOME = C:\Program Files\Java\jdk-17.0.1\bin❌ -
JAVA_HOME = C:\Program Files\Java\jre-17.0.1❌
PATH 中必须包含 %JAVA_HOME%\bin(Windows)或 $JAVA_HOME/bin(macOS/Linux)
只配 JAVA_HOME 不够,系统命令行仍找不到 java、javac。PATH 必须显式引用它,否则 java -version 会提示“命令未找到”或调用到旧版本。
Windows 示例(系统环境变量 PATH 新增):
立即学习“Java免费学习笔记(深入)”;
%%JAVA_HOME%%\bin
macOS/Linux(在 ~/.zshrc 或 ~/.bash_profile 中):
export PATH=$JAVA_HOME/bin:$PATH
注意顺序:把 $JAVA_HOME/bin 放在 PATH 开头,避免系统自带的 OpenJDK 覆盖你配置的 JDK。
验证是否生效:用 java -version 和 javac -version 分开检查
很多人只运行 java -version 就以为 OK,但实际项目编译依赖 javac。如果 JAVA_HOME 指向 JRE(无 javac),Maven 构建会直接失败,报错 Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:... Compiler not found。
务必同时执行:
-
java -version—— 检查运行时版本 -
javac -version—— 检查编译器是否存在且版本一致 -
echo $JAVA_HOME(macOS/Linux)或echo %JAVA_HOME%(Windows)—— 确认变量值无空格、符号或拼写错误
IDE(如 IntelliJ / Eclipse)需要独立重启并重新加载项目 SDK
即使终端里 java -version 正确,IDE 仍可能沿用旧的 JDK 配置。IntelliJ 默认不读取系统 JAVA_HOME,而是从 Project Structure → SDKs 里手动指定;Eclipse 则在 Preferences → Java → Installed JREs 中管理。
常见表现:
- Maven 控制台显示 JDK 17,但 IDEA 编辑器里语法标红(提示“Diamond operator is not supported”)
- 运行 Spring Boot 项目时报
Unsupported class file major version 61(实际是 IDE 用了 JDK 11 编译)
解决方式:
- 关闭 IDE → 彻底退出进程 → 重新打开
- 在项目设置中显式选择与
JAVA_HOME对应的 JDK(例如17.0.1,而非17或corretto-17这类模糊别名) - 检查 Maven import 设置是否勾选了 “Use JAVA_HOME”(IntelliJ 中在 Settings → Build → Build Tools → Maven → Import)










