开发 Java 程序必须安装 JDK 而非 JRE,因 JDK 包含 javac、javadoc、jdb 等开发工具,JRE 仅支持运行已编译代码;现代 JDK(9+)已内置运行时,无需单独安装 JRE。

JDK 和 JRE 到底谁该装
开发 Java 程序必须装 JDK,不是 JRE。JRE 只能运行已编译的 .class 或 .jar 文件,不能编译源码、没有 javac、没有 javadoc、也没有调试用的 jdb。如果你在 IDE 里写代码却提示 “Cannot resolve symbol” 或 “javac is not recognized”,大概率是只装了 JRE 或 PATH 指向了 JRE 的 bin 目录。
为什么装了 JDK 还会报错找不到 javac
常见原因是系统 PATH 混淆:Windows 上可能同时存在旧版 JRE 的路径(如 C:\Program Files\Java\jre1.8.0_291\bin)排在 JDK 路径前面;macOS/Linux 中 export JAVA_HOME 指向了 JRE 目录(比如结尾是 /Contents/Home/jre)。检查方式很简单:
echo $JAVA_HOME which javac java -version javac -version
这四条命令的输出必须一致指向同一套 JDK 安装路径,且 javac -version 不能报 command not found。
JDK 里其实已经包含 JRE
现代 JDK(JDK 9+)不再单独提供独立 JRE 安装包,JRE 已作为子目录内嵌在 JDK 中:$JAVA_HOME/jre(JDK 8)或更常见的 $JAVA_HOME/jmods + jlink 构建定制运行时(JDK 11+)。这意味着:
立即学习“Java免费学习笔记(深入)”;
- 不需要额外下载 JRE,也不建议单独安装 JRE
-
java命令默认使用 JDK 自带的运行时,无需切换 - 若需极简运行环境(如部署服务器),可用
jlink生成仅含必要模块的自定义 JRE,而不是用旧式完整 JRE
IDE 和构建工具怎么认 JDK
IntelliJ、Eclipse、VS Code 的 Java 插件,以及 Maven、Gradle,都依赖 JAVA_HOME 或显式配置的 JDK 路径。它们不看注册表或系统默认 Java,只认你指定的路径。常见疏漏点:
- IDE 设置里选了
JRE目录而非JDK目录(例如选了.../jdk-17.0.1/jre而不是.../jdk-17.0.1) - Maven 的
MAVEN_OPTS或pom.xml中硬编码了1.8,但本地只有 JDK 17,导致编译失败(错误信息类似Unsupported class file major version 61) - Gradle 使用的 Java 版本由
gradle.properties中org.gradle.java.home控制,和系统JAVA_HOME无关
最稳妥的做法:卸载所有独立 JRE;只装一个主流版本 JDK(如 LTS 版本 JDK 17 或 21);把 JAVA_HOME 指向其根目录;所有工具统一从这个变量读取。










