只装 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 缺失、构建失败等真实问题。
从 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 都能正常执行,说明编译与运行环境已合一javac 时,会自动从 JAVA_HOME/bin 查找,若只装“JRE”,javac 命令直接报 'javac' is not recognized
tools.jar(含 com.sun.tools.javac.Main)已模块化为 jdk.compiler,仅在 JDK 中存在JDK 而非 JRE 的真实原因虽然 IDE 设置里常看到 “Project SDK” 或 “JRE System Library” 字样,但它们底层仍需访问 JDK 特有资源:
JAVA_HOME/jre/lib/rt.jar ——而 JDK 17+ 中该路径已不存在,实际读取的是 $JAVA_HOME/lib/modules
java --list-modules 和 javac -h 生成头文件,这些命
令只在 JDK 中可用java.exe 的旧 JRE(比如 C:\Program Files\Java\jre1.8.0_202),点开 “Project Structure → SDKs” 会发现 “No JDK specified”,提示你补全别被“运行环境只需 JRE”的旧观念误导。现代部署场景中,JDK 提供的关键能力远超“运行”:
立即学习“Java免费学习笔记(深入)”;
jstack、jmap、jstat 等诊断工具必须由 JDK 提供,生产环境 OOM 或线程阻塞时,没它们等于瞎眼eclipse-jdk17:latest)默认基于完整 JDK,若强行用自建 JRE 镜像,CI 流程中 mvn compile 会因缺失 javac 失败--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,静默则大概率是残缺环境。