JDK 是运行和开发 Java 应用的必备环境,必须正确配置 JAVA_HOME 指向 JDK 根目录且 PATH 包含 %JAVA_HOME%\bin(Windows)或 $JAVA_HOME/bin(Linux/macOS),否则会出现命令未找到或类加载失败;验证需执行 java -version、javac -version 和 echo 命令确认版本与路径一致。
Java 运行环境(JRE)本身不需“安装”来运行已编译的 .jar 或 .class 文件,但实际开发和运行中,你真正需要的是 JDK(含 JRE),且必须正确配置 JAVA_HOME 和 PATH——否则 java、javac 命令会报“command not found”或“找不到或无法加载主类”。
常见原因是系统没把 JDK 的 bin 目录加进 PATH,或者 JAVA_HOME 指向了错误路径(比如指向 JRE 目录而非 JDK 根目录)。
JAVA_HOME 必须设为 JDK 安装根目录(如 C:\Program Files\Java\jdk-17.0.1 或 
/usr/lib/jvm/jdk-17.0.1),不能是 jdk-17.0.1\jre 或 jdk-17.0.1\bin
PATH 中需包含 %JAVA_HOME%\bin(Windows)或 $JAVA_HOME/bin(Linux/macOS),且该条目要放在其他 Java 相关路径之前,避免旧版本干扰别只信安装程序的“完成”弹窗。打开终端执行以下三步,缺一不可:
java -version javac -version echo $JAVA_HOME # Linux/macOS echo %JAVA_HOME% # Windows
理想输出应显示相同版本号(如 17.0.1),且 JAVA_HOME 路径与 java -XshowSettings:properties -version 2>&1 | grep java.home 输出一致。若 javac 报错而 java 正常,说明你装的是 JRE 而非 JDK。
图形界面设置易出错:系统变量和用户变量混用、路径含空格未加引号、复制时带隐藏字符等。
[System.Environment]::SetEnvironmentVariable('JAVA_HOME', 'C:\Program Files\Java\jdk-17.0.1', 'Machine')
[System.Environment]::SetEnvironmentVariable('PATH', "$env:PATH;`%JAVA_HOME`%\bin", 'Machine')Program Files)无需引号,但变量引用必须用 %JAVA_HOME%\bin,不能写成 "%JAVA_HOME%\bin"
where java,确认返回的是 JDK\bin\java.exe,而非 Windows\System32\java.exe(那是 Windows 自带的旧版)手动改 /etc/profile 或 ~/.zshrc 容易冲突,尤其当你需要同时用 Java 8(Spring Boot 2.x)和 Java 17(Spring Boot 3.x)时。
curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk list java,安装指定版本:sdk install java 17.0.1-tem
sdk default java 17.0.1-tem,它会自动更新 JAVA_HOME 和 PATH
sdk default 只影响当前 shell;若希望全局生效,确保 source 命令已写入 ~/.zshrc
最常被忽略的一点:很多教程让你下载 “JRE” 安装包,但自 JDK 9 起,Oracle 已停止单独发布 JRE;OpenJDK 社区也不再提供独立 JRE 构建。你现在能合法获取并安全使用的,只有 JDK——它自带 JRE,且 java 命令就来自其中的 bin 目录。别再找“JRE 安装包”了。