17370845950

在Java里JDK和JRE有什么区别_Java运行环境组成说明
JDK 能编译也能运行,JRE 只能运行;javac 找不到说明只装了 JRE;装了 JDK 却提示缺运行环境是因 IDE 或注册表指向错误 JRE;服务器仅运行 .jar 用 JRE 即可,调试需 JDK;Java 11+ 官方不再单独提供 JRE。

JDK 能编译也能运行,JRE 只能运行——这是你装哪个、怎么配环境的唯一判断依据。

javac 找不到?说明你只装了 JRE

你在命令行敲 javac HelloWorld.java,却收到 'javac' is not recognized as an internal or external command,基本可以断定:系统 PATH 指向的是 JRE 目录,或者根本没装 JDK。

  • JRE 安装包里压根没有 javac.exe,只有 java.exejvm.dll
  • JDK 安装后,javac 一定在 C:\Program Files\Java\jdk-21.0.2\bin\
  • 检查方法:直接进安装目录看 bin 文件夹里有没有 javac.exe;再查 PATH 环境变量是否包含该路径

装了 JDK 为什么还提示“找不到 Java 运行环境”?

常见于 IDE(如 IntelliJ 或 Eclipse)启动失败、或双击 .jar 文件报错。这不是缺 JRE,而是 JVM 启动参数或默认 JRE 配置指向了错误位置。

  • JDK 自带一套 JRE(位于 jdk-21.0.2\jre\),但某些旧版工具会优先读取注册表或系统级 JRE(如 C:\Program Files\Java\jre1.8.0_391\
  • IDE 的 Project Structure → SDKs 里若选了 JRE 而非 JDK,就无法识别源码依赖和注解处理器
  • 双击 .jar 时,Windows 默认用注册表中 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment 指定的 JRE,哪怕你 PATH 里是 JDK

部署服务器要不要装 JDK?

只运行 Spring Boot 打包好的 .jar 文件,JRE 就够用;但如果你要在服务器上热编译、用 jstack 查线程、或跑 jvisualvm 分析内存,就必须装 JDK。

  • JRE 占用更小(约 100MB),适合容器镜像精简部署;JDK 通常 300MB+,含大量调试/诊断工具
  • Java 11 开始,官方已不再单独提供 JRE 下载,JDK 成为事实标准;但你可以用 jlink 自定义最小运行时镜像
  • 云厂商镜像(如 Amazon Corretto、Alibaba Dragonwell)常提供 “J

    RE-only” 版本,本质是裁剪后的 JDK,仍含 java 命令,但无 javac

真正容易被忽略的点是:JDK 中的 java 命令,实际调用的是它自带 jre\bin\ 下的可执行文件,而不是你自己 PATH 里混进去的另一个 JRE —— 所以别以为 PATH 里有 java 就万事大吉,javacjava 必须来自同一套 JDK 才能保证版本一致、类库兼容。