只装 JDK 就够了,JRE 已成历史名词;Java 9 起 Oracle 不再提供独立 JRE,JDK 自带运行与编译能力,IDE、Maven/Gradle、Docker 部署均依赖 JDK,装 JRE 不仅多余还易致构建失败、工具缺失等问题。

只装 JDK 就够了,JRE 已成历史名词——尤其对 Java 9 及以后版本(如 JDK 17、JDK 21)。 Oracle 自 Java 9 起不再提供独立 JRE 下载,JDK 自带运行能力,且线上部署、IDE 配置、构建工具(Maven/Gradle)全部依赖 JDK。装 JRE 不仅多余,还可能引发 javac 找不到、tools.jar 缺失、构建失败等真实问题。
Java 11+ 环境下,为什么“装 JRE”根本不可行
从 JDK 11 开始,Oracle 官方彻底停止发布独立 JRE;OpenJDK 社区也同步取消 JRE 构建。你去官网(https://adoptium.net/ 或 https://jdk.java.net/)只能下载 jdk-17.0.1+12 这类包,里面没有 jre/ 目录,只有 bin/、lib/、conf/ ——但运行 Java 程序完全没问题。
-
java -version和javac -version都能正常执行,说明编译与运行环境已合一 - 构建工具(如 Maven)调用
javac时,会自动从JAVA_HOME/bin查找,若只装“JRE”,javac命令直接报'javac' is not recognized - 某些老教程提到的
tools.jar(含com.sun.tools.javac.Main)已模块化为jdk.compiler,仅在 JDK 中存在
IDE(IntelliJ/Eclipse)配置时,选 JDK 而非 JRE 的真实原因
虽然 IDE 设置里常看到 “Project SDK” 或 “JRE System Library” 字样,但它们底层仍需访问 JDK 特有资源:
- Eclipse 默认用内置编译器(ECJ),但启用 “Use compliance from execution environment” 或调试源码时,会回退查找
JAVA_HOME/jre/lib/rt.jar——而 JDK 17+ 中该路径已不存在,实际读取的是$JAVA_HOME/lib/modules - IntelliJ 的 “Add Framework Support” → “Spring Boot” 会调用
java --list-modules和javac -h生成头文件,这些命令只在 JDK 中可用 - 如果你在 IDEA 中误选了某个仅含
java.exe的旧 JRE(比如 C:\Program Files\Java\jre1.8.0_202),点开 “Project Structure → SDKs” 会发现 “No JDK specified”,提示你补全
线上服务器部署:JDK 是唯一安全选项
别被“运行环境只需 JRE”的旧观念误导。现代部署场景中,JDK 提供的关键能力远超“运行”:
立即学习“Java免费学习笔记(深入)”;
-
jstack、jmap、jstat等诊断工具必须由 JDK 提供,生产环境 OOM 或线程阻塞时,没它们等于瞎眼 - Docker 镜像(如
eclipse-jdk17:latest)默认基于完整 JDK,若强行用自建 JRE 镜像,CI 流程中mvn compile会因缺失javac失败 - Spring Boot 3.x + Jakarta EE 9+ 要求运行时支持
--enable-preview和--add-modules,这些 JVM 参数的合法性校验和模块解析,依赖 JDK 内置的java.base和jdk.unsupported模块
真正需要警惕的不是“该装哪个”,而是:是否用了过时文档指导安装、是否在 PATH 中混入多个 Java 版本导致 java 和 javac 版本不一致(常见错误:java -version 显示 21,javac -version 却是 1.8)。验证只需一行:
java -cp "$JAVA_HOME/lib/tools.jar" com.sun.tools.javac.Main 2>/dev/null || echo "JDK not detected"——有输出即为 JDK,静默则大概率是残缺环境。










