在Java中如何安装JDK与JRE区别_开发环境配置解析

开发 Java 程序必须安装 JDK 而非 JRE,因 JDK 包含 javac 等开发工具,JRE 仅用于运行字节码;常见错误包括 javac 报“command not found”、IDE 提示“No JDK specified”及 Maven 编译失败。

JDK 和 JRE 到底该装哪个

开发 Java 程序必须装 JDK,不是 JREJRE 只负责运行已编译的 .class 文件,不包含 javacjavadocjdb 等开发工具。如果你装了 JRE 后执行 javac 报错 “command not found” 或 “不是内部或外部命令”,基本就是只装了

JRE

常见错误现象:

  • IDE(如 IntelliJ 或 VS Code)提示 “No JDK specified” 或 “Cannot resolve symbol”
  • java -version 成功,但 javac -version 失败
  • Maven 编译时报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:... Compilation failure

下载与安装 JDK 的关键动作

去官网下载时注意三点:选对版本号(如 21.0.4)、选对操作系统(Windows/macOS/Linux)、选对架构(x64 还是 ARM64)。Mac M1/M2 用户务必选 aarch64 版本,否则 java -version 会报错 Bad CPU type in executable

安装后验证是否生效:

  • Windows:打开新终端,运行 where javac,输出路径应和 JAVA_HOME 一致
  • macOS/Linux:运行 which javacreadlink -f $(which java),确认指向 jdk-xx/bin/java 而非系统自带的 /usr/bin/java
  • 统一检查:echo $JAVA_HOME(Linux/macOS)或 echo %JAVA_HOME%(Windows),值必须是 JDK 根目录(不含 /bin

JAVA_HOME 配置最容易出错的地方

JAVA_HOME 必须指向 JDK 安装根目录,比如 /Library/Java/JavaVirtualMachines/jdk-21.0.4.jdk/Contents/Home(macOS),不是 .../Home/bin,也不是 /usr/libexec/java_home 的输出结果本身(那是命令,不是路径)。

不同场景下配置方式不同:

  • macOS/Linux:写入 ~/.zshrc(或 ~/.bash_profile):
    export JAVA_HOME=$(/usr/libexec/java_home -v 21)
    ——注意用命令动态获取比硬编码路径更可靠
  • Windows:系统环境变量中新建 JAVA_HOME,值为 C:\Program Files\Java\jdk-21.0.4;再编辑 Path,追加 %JAVA_HOME%\bin
  • IDE 需单独设置:IntelliJ → Preferences → Build → SDKs;VS Code 的 java.home 设置项必须填完整路径,不能只写 jdk-21

多个 JDK 共存时怎么切换

不用卸载旧版。关键是让 javajavac 指向当前要用的版本,而不是靠改 JAVA_HOME 单点控制。

推荐做法:

  • macOS/Linux:用 /usr/libexec/java_home -V 查看已安装列表,再用 export JAVA_HOME=$(/usr/libexec/java_home -v 17) 切换;可封装为 alias(如 jdk17
  • Windows:用 setx JAVA_HOME "C:\path\to\jdk-17" 临时改(需重启终端),或借助工具如 jabba / SDKMAN!
  • IDE 内部 SDK 设置优先级高于系统 JAVA_HOME,所以项目级 JDK 选错时,即使终端里 java -version 正确,编译仍可能失败

真正容易被忽略的是:IDE 启动时读取的是它自己的启动环境,不是你当前终端的 shell 环境。Mac 上从 Dock 启动 IntelliJ,默认没加载 ~/.zshrcJAVA_HOME 为空——这时必须在 IDE 内显式指定 SDK,不能依赖系统变量。