JAVA_HOME必须指向JDK根目录(如C:\Program Files\Java\jdk-17.0.1),不可指向JRE或bin子目录,否则javac等开发工具无法识别,导致Maven、IDE等报错;同时需将%JAVA_HOME%\bin加入PATH顶端并重启终端验证。

装 JDK 就够了,JRE 不用单独装,也不该手动配 JRE 路径 —— 这是绝大多数人踩坑的起点。
为什么 JAVA_HOME 必须指向 JDK 目录,不能指向 JRE
因为 JAVA_HOME 是开发工具链的根路径,javac、javadoc、jar 等命令都在 %JAVA_HOME%\bin 下;而 JRE 目录里只有 java.exe 和 javaw.exe,没有编译器。一旦把 JAVA_HOME 设成 JRE 路径,javac -version 会直接报错:'javac' is not recognized as an internal or external command。
常见错误现象:
- IDE(如 IntelliJ 或 Eclipse)提示“Cannot resolve JDK”或“Invalid JDK path”
-
mvn compile失败,报Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin - 构建脚本里调用
tools.jar(如某些旧版 Ant 任务)时抛NoClassDefFoundError
Path 中要不要加 %JAVA_HOME%\jre\bin
不需要,而且不建议加。JDK 8 及以前版本自带 JRE,其 bin 目录已包含完整运行时可执行文件(java.exe、javaw.exe、keytool.exe 等),和 %JAVA_HOME%\jre\bin 内容完全重叠。重复添加只会增加路径查找开销,还可能引发版本冲突(比如你系统里另有独立 JRE,路径顺序错乱导致调用到旧版 java.exe)。
正确做法只加一行:%JAVA_HOME%\bin。
验证方法:
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
- 打开新终端,运行
where java(Windows)或which java(macOS/Linux),输出应唯一且落在%JAVA_HOME%\bin下 - 运行
java -XshowSettings:properties -version 2>&1 | findstr "java.home"(Windows),确认java.home值等于%JAVA_HOME%,而非其子目录
JDK 11+ 没有 jre 子目录,CLASSPATH 还要配吗
不用配 CLASSPATH,现代 Java 已废弃该变量的默认使用。JDK 9 引入模块系统后,rt.jar、tools.jar 等被拆进 jmods,由 java 启动器自动加载。硬写 CLASSPATH=.;%JAVA_HOME%\lib\tools.jar 在 JDK 11+ 上不仅无效,还可能干扰模块解析,导致 ClassNotFoundException 或 ModuleResolutionException。
除非你在用极老的构建工具(如 Ant 1.7 或自定义类加载逻辑),否则删掉 CLASSPATH 环境变量更安全。
需要显式引入 jar 包时,用以下方式之一:
- 命令行:
java -cp "lib/a.jar;lib/b.jar" MyApp - Maven:在
pom.xml里声明依赖 - IDE:通过项目设置添加库,不碰全局环境变量
最容易被忽略的一点:改完环境变量后,所有已打开的终端、IDE、构建窗口都必须重启 —— Windows 的环境变量不是热更新的,旧进程仍读取启动时快照。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










