如何安装 JDK 并配置环境变量(Windows / macOS / Linux 全平台教程)
刚开始学 Java,第一步几乎都是同一件事:把 JDK 装好,再把环境变量配通。这一步做错,后面 javac 找不到、IDE 识别不到、Maven 报 JAVA_HOME 缺失,都会反复踩坑。
这篇文章按「选版本 → 安装 → 配环境变量 → 验证 → 排错」写完,覆盖 Windows、macOS、Linux。你可以按自己的系统直接跳到对应章节。
先搞清楚三个概念
- JVM:Java 虚拟机,真正跑字节码的地方。
- JRE:运行环境,包含 JVM 和运行时库。只运行程序通常够用。
- JDK:开发工具包,包含 JRE,再加上
javac、jar、jlink等编译和打包工具。
写代码、跑 Maven/Gradle、用 IntelliJ IDEA 开发,都应该装 JDK,不要只装 JRE。
该装哪个版本
优先选 LTS(长期支持)版本:
| 版本 | 定位 | 建议 |
|---|---|---|
| JDK 8 | 大量存量项目 | 维护老系统时再装 |
| JDK 11 | 过渡 LTS | 公司指定再用 |
| JDK 17 | 当前主流 LTS | 学习和大多数新项目首选 |
| JDK 21 | 新一代 LTS | 新项目可以直接上 |
个人学习和新项目,推荐 JDK 17 或 JDK 21。版本号可以并存,后面会讲多版本切换。
发行版怎么选:
- Eclipse Temurin(Adoptium):免费、稳定、跨平台,最推荐给新手。
- Oracle JDK:功能和 Temurin 基本等价,注意许可证。
- Amazon Corretto / Microsoft Build of OpenJDK / Azul Zulu:云厂商或特定场景常用。
- GraalVM:需要原生镜像时再考虑,不作为第一套开发环境。
下面以 Temurin JDK 17 为例,其他发行版步骤几乎一样。
Windows:安装并配置环境变量
1. 下载安装包
- 打开 Adoptium Temurin 或你选定的发行版官网。
- 选择:
- Version:
17 - LTS或21 - LTS - Operating System:
Windows - Architecture:64 位机器选
x64;ARM 电脑选aarch64 - Package Type:
JDK
- Version:
- 下载
.msi安装包(推荐)或.zip免安装包。
2. 用 MSI 安装
双击安装包,建议勾选:
- Set JAVA_HOME variable
- Add to PATH
- JavaSoft (Oracle) registry keys(部分 IDE / 工具会读注册表)
安装路径建议保持默认,例如:
C:\Program Files\Eclipse Adoptium\jdk-17.x.x-hotspot\
路径里尽量不要有中文;如果手动解压 zip,目录名用纯英文。
3. 手动配置环境变量(MSI 没勾选时必做)
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」。
- 在 系统变量 中新建:
- 变量名:
JAVA_HOME - 变量值:JDK 根目录,例如
C:\Program Files\Eclipse Adoptium\jdk-17.0.12+7-hotspot
- 变量名:
- 编辑系统变量
Path,新增(顺序建议靠前):%JAVA_HOME%\bin
- 全部点「确定」保存。已打开的 CMD / PowerShell 不会自动刷新,必须新开窗口。
注意:
JAVA_HOME指向 JDK 根目录,不要指向bin。Path里加的是%JAVA_HOME%\bin,不要把整段 JDK 根目录丢进 Path。- 如果以前装过 Java 8,把旧的
C:\Program Files\Java\jdk1.8.0_xxx\bin从 Path 里删掉或移到后面,避免抢优先级。
4. 验证
新开 CMD 或 PowerShell:
java -version
javac -version
echo %JAVA_HOME%
where java
成功时大致是:
openjdk version "17.0.12" 2024-07-16
OpenJDK Runtime Environment Temurin-17.0.12+7 (build 17.0.12+7)
OpenJDK 64-Bit Server VM Temurin-17.0.12+7 (build 17.0.12+7, mixed mode, sharing)
where java 应指向 %JAVA_HOME%\bin\java.exe。如果先弹出 C:\Windows\System32\java.exe 或 C:\Program Files\Common Files\Oracle\Java\javapath,说明旧路径还在 Path 前面,把它删掉或后移。
macOS:安装并配置环境变量
macOS 推荐两种方式:Homebrew,或直接装官方 pkg。
方式一:Homebrew(推荐)
brew install --cask temurin@17
# 或
brew install --cask temurin@21
查看已安装 JDK:
/usr/libexec/java_home -V
会列出类似:
17.0.12 (arm64) "Eclipse Adoptium" - "OpenJDK 17.0.12" /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
方式二:pkg 安装包
从 Adoptium 下载 macOS 的 .pkg,按向导安装。默认路径:
/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
配置 JAVA_HOME
zsh 用户编辑 ~/.zshrc,bash 用户编辑 ~/.bash_profile:
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
export PATH="$JAVA_HOME/bin:$PATH"
指定 21:
export JAVA_HOME=$(/usr/libexec/java_home -v 21)
然后:
source ~/.zshrc
java -version
javac -version
echo $JAVA_HOME
which java
Apple Silicon(M 系列)优先装 aarch64 版本,不要强行用 x64 + Rosetta,除非依赖必须如此。
Linux:安装并配置环境变量
以 Ubuntu / Debian 为例,CentOS / Fedora 把 apt 换成对应包管理器即可。
方式一:包管理器
sudo apt update
sudo apt install temurin-17-jdk
# 或 openjdk
sudo apt install openjdk-17-jdk
查看:
update-alternatives --list java
sudo update-alternatives --config java
方式二:手动解压(更可控)
sudo mkdir -p /usr/lib/jvm
sudo tar -xzf OpenJDK17U-jdk_x64_linux_hotspot_*.tar.gz -C /usr/lib/jvm
编辑 ~/.bashrc 或 /etc/profile.d/java.sh:
export JAVA_HOME=/usr/lib/jvm/jdk-17.0.12+7
export PATH="$JAVA_HOME/bin:$PATH"
source ~/.bashrc
java -version
javac -version
echo $JAVA_HOME
JAVA_HOME 同样指向 JDK 根目录,里面应能看到 bin、lib、include。
多版本共存怎么切
开发中经常要在 8 / 17 / 21 之间切换。
Windows
准备多个 JDK 目录,只改 JAVA_HOME 指向当前要用的根目录,Path 继续用 %JAVA_HOME%\bin。不要在 Path 里写死某个版本的绝对路径。
也可以用 SDKMAN 的 Windows 支持,或 jEnv 类工具;团队机器上「只改 JAVA_HOME」最稳。
macOS / Linux:SDKMAN(强烈推荐)
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk list java
sdk install java 17.0.12-tem
sdk install java 21.0.4-tem
sdk default java 17.0.12-tem
sdk use java 21.0.4-tem
SDKMAN 会自动维护 JAVA_HOME 和 PATH,比手改配置文件省心。
macOS 临时切换也可以:
export JAVA_HOME=$(/usr/libexec/java_home -v 21)
IDE 里还要再选一次 JDK
环境变量只管命令行。IntelliJ IDEA / VS Code / Eclipse 有自己的项目 SDK:
- IntelliJ IDEA:
Settings→Build, Execution, Deployment→Build Tools/Project Structure→Project SDK,指向刚才的 JDK Home。 - VS Code(Extension Pack for Java):
java.configuration.runtimes或命令面板Java: Configure Java Runtime。 - Maven / Gradle 也要确认用的是同一套 JDK,避免「终端是 17、IDE 是 8」。
常见问题
1. java 能用,javac 不能用
只装了 JRE,或 Path 只指到 JRE。改成 JDK,并保证 %JAVA_HOME%\bin 在 Path 中。
2. 改了环境变量却没生效
- Windows 必须新开终端。
- 改的是用户变量,但当前窗口继承的是旧系统变量,重启终端或注销再试。
- macOS / Linux 改错了文件:zsh 要改
~/.zshrc,不是~/.bashrc。
3. JAVA_HOME 指向了 bin
错误:
JAVA_HOME=C:\Program Files\Eclipse Adoptium\jdk-17\bin
正确:
JAVA_HOME=C:\Program Files\Eclipse Adoptium\jdk-17
Maven、Tomcat、部分构建脚本都假设 JAVA_HOME/bin/java 存在。
4. 多个 java 抢优先级
Windows 上 Oracle 安装器常塞入:
C:\Program Files\Common Files\Oracle\Java\javapath
把它从 Path 删除或移到 %JAVA_HOME%\bin 后面,再用 where java 确认顺序。
5. 权限或路径空格
公司电脑把 JDK 装在 D:\Program Files\Java 17 这类带空格目录通常没问题,但脚本没加引号会炸。更稳妥的做法是:
D:\dev\jdk-17
最小检查清单
装完后,这 4 条都通过再去建项目:
java -version输出版本符合预期。javac -version能出来,且和java主版本一致。echo JAVA_HOME(Windows 用%JAVA_HOME%)指向 JDK 根目录。- IDE 的 Project SDK 与命令行是同一套。
小结
安装 JDK 并不难,真正容易错的是三件事:装成了 JRE、JAVA_HOME 指错目录、Path 里旧版本排在前面。选一个 LTS(17 或 21),用 Temurin 或 SDKMAN 装好,配上 JAVA_HOME + bin,再用 java / javac / where/which 验证一遍,开发环境就算站住了。
下一步可以继续装 Maven 或 Gradle,并用 IDE 创建一个 Hello World 项目做冒烟测试。