Windows用MSI安装包勾选“Add to PATH”和“Set JAVA_HOME”可一步到位;Linux/macOS用解压版手动配置更可控,尤其多版本共存或内网部署时;JAVA_HOME必须指向JDK根目录(如D:\Java\jdk-17),PATH须添加%JAVA_HOME%\bin(Windows)或$JAVA_HOME/bin(Linux/macOS),否则java/javac命令无法全局执行。

JAVA_HOME 必须指向 JDK 根目录(如 D:\Java\jdk-17),不是 bin 子目录;PATH 里必须加 %JAVA_HOME%\bin(Windows)或 $JAVA_HOME/bin(Linux/macOS),否则 java 和 javac 命令在任意路径都执行不了。
Windows 下用 MSI 安装包最省事(推荐新手)
下载 OpenJDK17U-jdk_x64_windows_hotspot_*.msi 这类文件(Adoptium/Temurin 或 Microsoft Build 都行),双击安装时务必勾选三项:
✅ Add to PATH
✅ Set JAVA_HOME variable
✅ Associate .jar
安装路径别用中文、空格或特殊符号(比如不要装在 C:\Program Files (x86)\ 或桌面);推荐 D:\Java\jdk-17 这类干净路径。
装完立刻关掉所有已打开的 CMD/PowerShell,新开一个终端运行:java -versionjavac -version
有输出即成功。没输出就说明环境变量没生效——不是安装失败,是终端没刷新。
Windows 解压版怎么配 JAVA_HOME 和 PATH(适合多版本共存)
解压 openjdk-17.0.20.1+1_windows-x64_bin.zip 到无空格无中文路径,例如 D:\Java\jdk-17;
进该目录确认存在 bin\java.exe 和 bin\javac.exe;
然后手动配两个系统变量:
• 新建系统变量:JAVA_HOME = D:\Java\jdk-17
• 编辑系统变量 Path,新增一行:%JAVA_HOME%\bin
注意:JAVA_HOME 的值不能带尾部反斜杠,也不能写成 D:\Java\jdk-17\bin;Path 里已有旧 JDK 路径(比如 C:\Program Files\Java\jdk1.8.0_291\bin)建议删掉或下移,避免 java -version 返回错误版本。
Linux/macOS 手动解压 + 环境变量配置(生产环境首选)
下载 tar.gz 包(如 openjdk-17.0.20.1+1_linux-x64_bin.tar.gz),解压到统一位置:sudo tar -xzf openjdk-17.0.20.1+1_linux-x64_bin.tar.gz -C /usr/lib/jvm/
然后编辑 shell 配置文件:
• Ubuntu/Debian 用户改 ~/.bashrc 或 ~/.profile
• CentOS/RHEL/AlmaLinux 改 /etc/profile(全局)或 ~/.bash_profile(当前用户)
• macOS(zsh 默认)改 ~/.zshrc
添加两行:export JAVA_HOME=/usr/lib/jvm/jdk-17.0.20.1+1export PATH=$JAVA_HOME/bin:$PATH
保存后运行 source ~/.zshrc(或对应文件名)立即生效。
⚠️ 不要用 sudo su 后再执行 source,那只是 root 环境生效,普通用户仍看不到。
验证失败时最常被忽略的三个点
• java -version 成功但 javac -version 报“不是内部命令” → 你装的是 JRE 不是 JDK,下载包名必须含 jdk,不是 jre 或 runtime;
• 安装后只在 IDE 里能用 Java,终端里不行 → IDE 自带 JDK 配置覆盖了系统变量,要检查终端是否真读到了 JAVA_HOME(运行 echo $JAVA_HOME 或 echo %JAVA_HOME%);
• 多个 JDK 共存时 java -version 总返回老版本 → 检查 Path(Windows)或 PATH(Linux/macOS)里是否有其他 JDK 的 bin 目录排在前面,顺序决定优先级。


















