Spring Boot开发必须使用JDK而非JRE,因编译(javac)、注解处理、热加载、IDE识别等均依赖JDK工具链;验证需同时成功执行java -version和javac -version。

新手装 Spring Boot 时卡在环境配置,八成是因为把 JDK 和 JRE 当成“差不多的东西”——其实它们干的是两件事:一个负责把你的 .java 文件变成能跑的字节码,另一个只负责把字节码真正跑起来。Spring Boot 项目从写代码、编译、启动到调试,每一步都依赖 JDK,JRE 完全不够用。
Spring Boot 开发必须用 JDK,不是“可选”
Spring Boot 是开发框架,不是现成软件。你写的 @RestController、application.yml、甚至 mvn spring-boot:run 命令背后,都要经过:
-
javac 编译:把 Java 源文件转成
.class—— JRE 里根本没有 javac; -
Maven/Gradle 调用 JDK 工具链:比如注解处理器(
@Data)、源码生成(Lombok)、甚至 Spring Boot 的 DevTools 热加载都依赖 JDK 的运行时工具类; -
IDE(IntelliJ / VS Code)认的是 JDK 路径:如果
JAVA_HOME指向 JRE,项目根本加载不了,报错 “Cannot resolve symbol ‘SpringBootApplication’” 或 “No compiler available”。
一眼判断装对没:终端敲两行命令
打开命令行,不用看安装目录,直接验证:
-
java -version→ 显示版本,说明运行环境 OK(JRE 或 JDK 都行); -
javac -version→ 能返回版本号,才证明 JDK 安装完整; - 如果第二行报错 “'javac' 不是内部或外部命令”,就是只装了 JRE,或者 JDK 的
bin目录没加进系统PATH。
别被“JRE 也能跑 jar 包”带偏
Spring Boot 打包后的 xxx.jar 确实可以用 JRE 运行(java -jar xxx.jar),但这是部署阶段的事。而你作为新手,现在要做的不是“运行别人打包好的东西”,而是:
- 改一行代码就看到效果(需要编译 + 启动);
- 在 IDE 里打断点调试;
- 用
spring-boot-devtools实现热更新; - 跑单元测试(JUnit 需要 JDK 的工具类支持)。
这些全部依赖 JDK,JRE 做不到。
版本选 JDK 17,别纠结 8 或 11
Spring Boot 3.x(当前主流)强制要求 JDK 17+,JDK 8/11 编译出来的 class 文件,JDK 17 的 JVM 根本不认(class file version 不兼容)。新项目起步就选:
- OpenJDK 17(推荐 Eclipse Temurin 或 Amazon Corretto);
- 确认下载的是 JDK 包(名字带 “jdk” 或 “Development Kit”,不是 “jre” 或 “Runtime Environment”);
- 安装后设置
JAVA_HOME指向 JDK 根目录(如C:\Program Files\Eclipse\temurin-17-jdk),再把%JAVA_HOME%\bin加进PATH。


















