Windows/Linux/Mac下JDK完整安装下载流程
本章导读:工欲善其事,必先利其器。JDK(Java Development Kit)是Java开发的基石,是所有Java程序的编译与运行基础。本章将从JDK的下载选择讲起,逐一覆盖Windows、macOS、Linux三大主流操作系统的完整安装流程,包括环境变量配置、多版本管理、IDE集成验证以及常见问题排查,帮助读者在任何平台上顺利搭建Java开发环境。
一、JDK概述与版本选择
1.1 什么是JDK
JDK(Java Development Kit)是Java开发工具包,它包含了Java程序开发所需的核心工具集合。一个标准的JDK包含以下关键组件:
| 组件 | 说明 |
|---|---|
| javac | Java编译器,将.java源文件编译为.class字节码文件 |
| java | Java应用程序启动器,用于运行编译后的字节码 |
| jar | Java归档工具,用于打包多个类文件为JAR包 |
| javadoc | API文档生成工具,从源代码注释中提取并生成HTML文档 |
| jdb | Java调试器,用于程序调试 |
| jps | JVM进程状态工具,查看当前运行的Java进程 |
| jconsole | 图形化监控工具,用于监控JVM性能 |
| jvisualvm | 可视化VM工具,提供更丰富的性能分析功能 |
| jlink | 创建自定义Java运行时镜像的工具 |
| jshell | Java交互式编程环境(REPL),从Java 9开始引入 |
值得强调的是,JDK与JRE(Java Runtime Environment)是两个不同的概念。JRE仅包含Java程序运行所需的最小环境,不包含编译器等开发工具。对于开发者而言,应当安装完整JDK而非仅JRE。从Java 11开始,Oracle官方不再单独发布JRE,JDK本身即包含了运行环境。
1.2 Oracle JDK与OpenJDK的选择
当前Java生态中存在多个JDK发行版,理解它们之间的区别有助于做出合适的选择。
| 特性 | Oracle JDK | OpenJDK | Adoptium (Eclipse Temurin) | Amazon Corretto | Azul Zulu |
|---|---|---|---|---|---|
| 维护方 | Oracle公司 | OpenJDK社区 | Eclipse基金会 | Amazon | Azul Systems |
| 许可证 | Oracle免费使用许可(NFTC) | GPLv2+CE | GPLv2+CE | GPLv2+CE | GPLv2+CE |
| 免费商用 | 是(Java 17+) | 是 | 是 | 是 | 是 |
| 长期支持(LTS) | 有(LTS版本付费支持) | 由发行商提供 | 提供LTS版本 | 提供LTS版本 | 提供LTS版本 |
| 更新频率 | 季度更新 | 依赖发行商 | 季度更新 | 季度更新 | 季度更新 |
| 安装包 | .exe/.msi/.dmg/.tar.gz | .tar.gz | .msi/.pkg/.tar.gz | .msi/.pkg/.rpm/.deb | .msi/.dmg/.deb/.rpm |
选择建议:对于学习和个人开发,推荐使用OpenJDK的发行版,如Eclipse Temurin(前身为AdoptOpenJDK),因为它完全开源、免费商用、社区活跃且提供各平台的安装包。对于企业环境,如果需要商业支持服务,可选择Oracle JDK并购买支持订阅。
1.3 Java版本选择
Java的版本历史可以分为几个重要阶段。截至2026年,当前最新的LTS版本为Java 21,而Java 25预计将在2026年9月发布。
版本选择建议:
| 场景 | 推荐版本 | 原因 |
|---|---|---|
| 学习Java基础 | Java 17 或 Java 21 | LTS版本,稳定且生态成熟 |
| 企业生产环境 | Java 17 或 Java 21 | 长期支持,安全更新保障 |
| 个人新项目起步 | Java 21 | 享受最新LTS特性(虚拟线程等) |
| 维护遗留系统 | Java 8 或 Java 11 | 视现有项目版本决定 |
| 探索前沿特性 | Java 24 | 体验最新语言特性 |
小贴士:本章后续安装示例以Java 21(Eclipse Temurin发行版)为主要演示对象,但安装流程同样适用于Java 17或其他版本。
二、下载JDK
2.1 各发行版下载地址
在安装之前,需要从官方网站获取JDK安装包。以下是各主流发行版的下载页面:
| 发行版 | 下载地址 | 说明 |
|---|---|---|
| Eclipse Temurin | https://adoptium.net/download/ | 推荐的OpenJDK发行版,支持所有平台 |
| Oracle JDK | https://www.oracle.com/java/technologies/downloads/ | 需注册Oracle账号(新版不再强制) |
| Amazon Corretto | https://aws.amazon.com/corretto/ | AWS维护,生产环境友好 |
| Azul Zulu | https://www.azul.com/downloads/ | 商业友好,支持广泛 |
| Microsoft OpenJDK | https://www.microsoft.com/openjdk/ | 微软构建的OpenJDK |
| OpenLogic OpenJDK | https://www.openlogic.com/openjdk-downloads | 提供长期更新服务 |
2.2 下载步骤示意
以Eclipse Temurin下载为例:
- 打开 https://adoptium.net/download/ 页面
- 在"操作系统"下拉框中选择你的操作系统(Windows/macOS/Linux)
- 在"架构"中选择CPU架构(通常为x64,ARM Mac选择aarch64)
- 在"包类型"中选择安装包格式(Windows选.msi,Mac选.pkg,Linux选.tar.gz)
- 在"版本"中选择需要的Java版本(如21 LTS)
- 点击下载按钮获取安装包
注意:下载前请确认操作系统的位数(32位或64位)。现代计算机几乎均为64位架构,应下载64位版本的JDK。如果不确定,可以查看系统信息。
三、Windows平台安装教程
3.1 安装前的检查
在开始安装之前,建议先检查系统是否已安装其他Java版本。打开命令提示符(Win+R,输入cmd回车),执行:
java -version javac -version where java
如果系统中已有旧版本Java,可以选择卸载旧版本,也可以保留多个版本(后文将介绍多版本管理方法)。
3.2 下载Windows版JDK
Windows平台的JDK安装包通常有两种格式:
| 格式 | 特点 | 适用场景 |
|---|---|---|
| .msi | Windows Installer标准格式,支持静默安装和远程部署 | 企业批量部署 |
| .zip | 压缩包,解压即用,无需安装过程 | 便携使用、多版本共存 |
这里以.msi安装包为例进行演示。从Eclipse Temurin官网下载OpenJDK21U-jdk_x64_windows_hotspot_21.x.x.msi文件。
3.3 安装步骤
步骤一:启动安装向导
双击下载的.msi安装包文件,弹出安装向导。点击"Next"进入下一步。
步骤二:接受许可协议
阅读许可协议内容,勾选"I accept the terms in the License Agreement",点击"Next"继续。
步骤三:选择安装组件
在组件选择界面,确保选中以下选项:
| 组件选项 | 说明 | 是否勾选 |
|---|---|---|
| Set JAVA_HOME variable | 将JDK安装路径设置为JAVA_HOME系统环境变量 | 强烈推荐勾选 |
| JavaSoft (Oracle) registry keys | 在注册表中写入Java相关键值,供其他程序识别 | 推荐勾选 |
| Add to PATH | 将%JAVA_HOME%\bin加入系统PATH | 可选勾选(也可后续手动配置) |
| Associate .jar | 将.jar文件关联到Java运行时 | 根据需求勾选 |
步骤四:选择安装路径
默认安装路径通常为C:\Program Files\Eclipse Adoptium\jdk-21.0.0.0-hotspot\。如果希望自定义路径,点击"Change"修改。建议避免路径中包含空格和中文字符。例如:
D:\DevTools\Java\jdk-21
步骤五:完成安装
点击"Install"开始安装。安装过程可能需要管理员权限,如果弹出UAC提示,点击"是"允许。等待进度条完成,点击"Finish"结束安装。
3.4 环境变量配置(手动)
如果安装时未勾选自动配置环境变量的选项,或者需要手动检查和确认环境变量,请按以下步骤操作。
3.4.1 打开环境变量设置
- 右键点击"此电脑"(或"我的电脑"),选择"属性"
- 点击左侧"高级系统设置"
- 在弹出的"系统属性"窗口中,点击"环境变量"按钮
也可以直接在搜索栏输入"环境变量",选择"编辑系统环境变量"。
3.4.2 配置JAVA_HOME
JAVA_HOME是Java开发环境中最重要的系统变量,许多工具(如Maven、Gradle、Tomcat、IntelliJ IDEA)都依赖它来定位JDK。
在"系统变量"区域点击"新建":
| 变量名 | 变量值 |
|---|---|
JAVA_HOME | D:\DevTools\Java\jdk-21(替换为你的实际安装路径) |
3.4.3 配置PATH
在"系统变量"中找到Path变量,选中后点击"编辑"。在编辑窗口中新增一条记录:
%JAVA_HOME%\bin
%JAVA_HOME%\bin
然后点击"上移"按钮将其移动到靠前的位置,确保系统优先使用此JDK。这样做的目的是避免PATH中其他路径下的java.exe(如某些软件自带的JRE)产生干扰。 如果CLASSPATH变量尚不存在,在"系统变量"区域新建: | 变量名 | 变量值 | |--------|--------| | `CLASSPATH` | `.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar` | > **说明**:上述CLASSPATH中的`dt.jar`和`tools.jar`在Java 9及更高版本中已不存在。对于Java 9+,只需设置`CLASSPATH`为`.;`即可,表示在当前目录中查找类文件。实际上,在现代Java开发中通常不再需要手动设置CLASSPATH环境变量,IDE和构建工具会自动管理类路径。 点击"确定"保存所有设置。 ### 3.5 验证安装 打开**新的**命令提示符窗口(注意:必须新开窗口,旧窗口不会继承刚修改的环境变量),依次执行以下命令: ```cmd java -version
正确的输出类似于:
openjdk version "21.0.4" 2024-07-16 LTS OpenJDK Runtime Environment Temurin-21.0.4+7 (build 21.0.4+7-LTS) OpenJDK 64-Bit Server VM Temurin-21.0.4+7 (build 21.0.4+7-LTS, mixed mode, sharing)
javac -version
正确的输出类似于:
javac 21.0.4
echo %JAVA_HOME%
正确的输出应为JDK的安装路径:
D:\DevTools\Java\jdk-21
如果以上三条命令均显示正常,则说明JDK安装和环境变量配置成功。
3.6 第一个Java程序测试
创建一个测试文件来验证整个开发流程。在某个目录下新建HelloWorld.java:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Java World!");
System.out.println("Java Version: " + System.getProperty("java.version"));
System.out.println("Java Home: " + System.getProperty("java.home"));
}
}
在命令提示符中,进入该文件所在目录,执行:
javac HelloWorld.java java HelloWorld
预期输出:
Hello, Java World! Java Version: 21.0.4 Java Home: D:\DevTools\Java\jdk-21
至此,Windows平台的JDK安装与配置全部完成。
四、macOS平台安装教程
macOS平台安装JDK有多种方式,本节介绍最常用的两种方法:Homebrew包管理器安装和官方.pkg安装包安装。
4.1 方法一:Homebrew安装(推荐)
Homebrew是macOS上最流行的包管理器,使用它可以极大地简化软件的安装和版本管理。
步骤一:安装Homebrew(如果尚未安装)
打开"终端"(Terminal),执行以下命令安装Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装完成后,执行brew --version验证:
brew --version # 输出示例: Homebrew 4.x.x
步骤二:使用Homebrew搜索和安装JDK
首先搜索可用的OpenJDK版本:
brew search openjdk
输出类似于:
openjdk openjdk@11 openjdk@17 openjdk@21 openjdk@8 openjdk@24
安装Java 21:
brew install openjdk@21
安装过程中,Homebrew会自动下载并安装依赖。安装位置通常在/usr/local/opt/openjdk@21/(Intel Mac)或/opt/homebrew/opt/openjdk@21/(Apple Silicon Mac)。
步骤三:配置符号链接
Homebrew安装的OpenJDK属于"keg-only"软件包,不会自动链接到系统路径以避免冲突。安装完成后,终端会显示提示信息,告诉你如何创建符号链接:
# 对于Apple Silicon Mac: sudo ln -sfn /opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-21.jdk # 对于Intel Mac: sudo ln -sfn /usr/local/opt/openjdk@21/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-21.jdk
4.2 方法二:.pkg安装包安装
步骤一:下载.pkg安装包
从Eclipse Temurin官网(https://adoptium.net/download/)下载macOS平台的.pkg安装包。注意选择正确的架构(Apple Silicon选择aarch64,Intel选择x64)。
步骤二:运行安装向导
双击.pkg文件启动安装向导,按照界面提示完成安装。安装过程与普通macOS软件安装流程一致,通常一路点击"继续"即可。
默认安装路径:
/Library/Java/JavaVirtualMachines/temurin-21.jdk
4.3 环境变量配置
macOS的环境变量配置依赖于所使用的Shell。现代macOS默认使用Zsh,配置文件为~/.zshrc;如果使用Bash,则配置文件为~/.bash_profile或~/.bashrc。
步骤一:确定当前Shell
echo $SHELL # 输出 /bin/zsh 表示使用 Zsh # 输出 /bin/bash 表示使用 Bash
步骤二:编辑配置文件
对于Zsh用户(macOS Catalina及以上版本的默认Shell):
# 使用nano编辑器打开配置文件 nano ~/.zshrc # 或使用vim vim ~/.zshrc
在文件末尾添加以下内容:
# ===== Java环境变量配置 ===== export JAVA_HOME=$(/usr/libexec/java_home -v 21) export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib
说明:macOS提供了/usr/libexec/java_home工具来查找已安装的Java路径。-v 21参数指定版本号为21,如果不指定版本则返回最新安装的Java。通过这个工具获取的路径始终是正确的。
步骤三:刷新配置
source ~/.zshrc # 如果使用Zsh # 或 source ~/.bash_profile # 如果使用Bash
4.4 验证安装
在终端中执行验证命令:
java -version
预期输出:
openjdk version "21.0.4" 2024-07-16 LTS OpenJDK Runtime Environment Temurin-21.0.4+7 (build 21.0.4+7-LTS) OpenJDK 64-Bit Server VM Temurin-21.0.4+7 (build 21.0.4+7-LTS, mixed mode, sharing)
javac -version # 输出: javac 21.0.4
echo $JAVA_HOME # 输出: /Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home
/usr/libexec/java_home -V
最后这条命令会列出macOS上所有已安装的Java版本:
Matching Java Virtual Machines (2):
21.0.4 (arm64) "Eclipse Adoptium" - "OpenJDK 21.0.4" /Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home
17.0.12 (arm64) "Eclipse Adoptium" - "OpenJDK 17.0.12" /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
4.5 macOS多版本JDK管理
如果需要在一台Mac上安装和使用多个JDK版本,使用JAVA_HOME变量切换即可。在~/.zshrc中可以定义便捷的切换函数:
# ===== 多版本JDK切换函数 ===== export JAVA_8_HOME=$(/usr/libexec/java_home -v 1.8) export JAVA_11_HOME=$(/usr/libexec/java_home -v 11) export JAVA_17_HOME=$(/usr/libexec/java_home -v 17) export JAVA_21_HOME=$(/usr/libexec/java_home -v 21) # 默认使用Java 21 export JAVA_HOME=$JAVA_21_HOME # 切换函数 alias java8='export JAVA_HOME=$JAVA_8_HOME' alias java11='export JAVA_HOME=$JAVA_11_HOME' alias java17='export JAVA_HOME=$JAVA_17_HOME' alias java21='export JAVA_HOME=$JAVA_21_HOME' # 查看当前Java版本 alias javaver='java -version'
使用方法:在终端中直接输入java11即可将当前终端会话的Java切换为版本11,使用javaver查看当前版本。
五、Linux平台安装教程
Linux发行版众多,本节以最主流的Debian/Ubuntu系列和RHEL/CentOS/Fedora系列为代表,分别演示通过包管理器和手动解压两种方式安装JDK。
5.1 检查系统信息
在开始安装前,先确认Linux系统的基本信息:
# 查看系统发行版信息 cat /etc/os-release # 查看系统架构 uname -m # x86_64 表示64位x86架构 # aarch64 表示64位ARM架构 # 检查是否已安装Java java -version 2>/dev/null || echo "未安装Java" which java
5.2 方法一:包管理器安装(推荐)
包管理器安装是最简单的方式,会自动解决依赖关系。
5.2.1 Debian/Ubuntu系列(使用APT)
步骤一:更新软件包列表
sudo apt update
步骤二:安装JDK
Ubuntu/Debian官方仓库中提供了OpenJDK。自Ubuntu 20.04起,官方支持OpenJDK 11及更高版本。
# 安装Java 21 sudo apt install openjdk-21-jdk -y # 如需安装Java 17 # sudo apt install openjdk-17-jdk -y # 如需安装Java 11 # sudo apt install openjdk-11-jdk -y
如果官方仓库中的版本较旧,可以添加Eclipse Adoptium的官方APT仓库来获取最新版本:
# 添加Adoptium GPG密钥
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo apt-key add -
# 添加Adoptium仓库(以Ubuntu 22.04为例)
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^UBUNTU_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
# 更新并安装
sudo apt update
sudo apt install temurin-21-jdk -y步骤三:验证安装
java -version javac -version
5.2.2 RHEL/CentOS/Fedora系列(使用YUM/DNF)
对于RHEL 8+ / CentOS Stream / Fedora(使用DNF):
# 搜索可用的OpenJDK版本 dnf search openjdk # 安装Java 21 sudo dnf install java-21-openjdk-devel -y # 安装Java 17 # sudo dnf install java-17-openjdk-devel -y
对于CentOS 7 / RHEL 7(使用YUM):
# 搜索可用的OpenJDK版本 yum search openjdk # 安装Java 11(CentOS 7默认仓库中最高版本通常为11) sudo yum install java-11-openjdk-devel -y
如果需要更新的版本,可以添加Adoptium的RPM仓库:
# 添加Adoptium RPM仓库 cat <<EOF | sudo tee /etc/yum.repos.d/adoptium.repo [adoptium] name=Adoptium baseurl=https://packages.adoptium.net/artifactory/rpm/\$releasever/\$basearch enabled=1 gpgcheck=1 gpgkey=https://packages.adoptium.net/artifactory/api/gpg/key/public EOF # 安装 sudo dnf install temurin-21-jdk -y
5.3 方法二:手动解压.tar.gz安装
对于无法使用包管理器的场景,或需要将JDK安装在自定义位置时,可以采用手动解压方式。
步骤一:下载.tar.gz安装包
使用wget或curl下载JDK压缩包(以Eclipse Temurin为例):
# 进入下载目录 cd /tmp # 使用wget下载(注意替换为实际的下载链接) wget https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.4%2B7/OpenJDK21U-jdk_x64_linux_hotspot_21.0.4_7.tar.gz # 或使用curl下载 # curl -L -o jdk-21.tar.gz https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.4%2B7/OpenJDK21U-jdk_x64_linux_hotspot_21.0.4_7.tar.gz
步骤二:解压到目标目录
# 创建安装目录 sudo mkdir -p /usr/lib/jvm # 解压tar.gz文件 sudo tar -xzf OpenJDK21U-jdk_x64_linux_hotspot_21.0.4_7.tar.gz -C /usr/lib/jvm/ # 查看解压后的目录 ls -la /usr/lib/jvm/
解压后通常得到一个以版本号命名的目录,如jdk-21.0.4+7。为了便于管理和引用,可以创建一个不带版本号的符号链接:
sudo ln -s /usr/lib/jvm/jdk-21.0.4+7 /usr/lib/jvm/jdk-21
步骤三:配置环境变量
Linux上配置环境变量有多种方式,区别如下:
| 配置文件 | 作用范围 | 适用场景 |
|---|---|---|
~/.bashrc | 当前用户,每个交互Shell | 个人开发环境 |
~/.profile | 当前用户,登录Shell | 个人开发环境(仅登录时执行) |
/etc/profile | 所有用户,登录Shell | 服务器多用户环境 |
/etc/environment | 所有用户,系统级 | 全局默认环境(不支持变量展开) |
/etc/profile.d/java.sh | 所有用户,登录Shell | 模块化管理(推荐服务器使用) |
推荐方式:为当前用户配置(~/.bashrc)
编辑~/.bashrc文件:
nano ~/.bashrc # 或 vim ~/.bashrc
在文件末尾添加:
# ===== Java环境变量配置 ===== export JAVA_HOME=/usr/lib/jvm/jdk-21 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib # 可选:为JRE也设置路径 export JRE_HOME=$JAVA_HOME
让配置立即生效:
source ~/.bashrc
推荐方式:为所有用户配置(/etc/profile.d/)
在服务器环境中,如果需要让所有用户都能使用该JDK,可以在/etc/profile.d/目录下创建独立的配置脚本:
sudo tee /etc/profile.d/java.sh << 'EOF' # Java环境变量 - 对所有用户生效 export JAVA_HOME=/usr/lib/jvm/jdk-21 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib EOF # 赋予执行权限 sudo chmod +x /etc/profile.d/java.sh # 重新登录或执行source使配置生效 source /etc/profile.d/java.sh
5.4 Linux验证安装
java -version javac -version echo $JAVA_HOME which java
此外,可以通过以下命令查看JDK的详细安装信息:
# 查看Java可执行文件的实际路径 readlink -f $(which java) # 查看JDK目录结构 ls -la $JAVA_HOME # 查看javac的详细信息 javac --help | head -5
5.5 Linux多版本JDK管理
Linux上管理多个JDK版本有两种主要方式:传统的update-alternatives工具和手动环境变量切换。
5.5.1 使用update-alternatives(Debian/Ubuntu)
update-alternatives是Debian系列Linux发行版提供的工具,用于在多个相似程序之间选择和切换默认版本。
注册多个JDK到alternatives系统:
# 注册Java 21 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-21/bin/java 2100 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-21/bin/javac 2100 # 注册Java 17 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-17/bin/java 1700 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-17/bin/javac 1700 # 注册Java 11 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-11/bin/java 1100 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-11/bin/javac 1100
说明:命令末尾的数字(2100、1700、1100)表示优先级,数字越大优先级越高。系统会自动选择优先级最高的版本作为默认。
交互式切换JDK版本:
sudo update-alternatives --config java
执行后会看到如下交互界面:
There are 3 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/lib/jvm/jdk-21/bin/java 2100 auto mode 1 /usr/lib/jvm/jdk-11/bin/java 1100 manual mode 2 /usr/lib/jvm/jdk-17/bin/java 1700 manual mode 3 /usr/lib/jvm/jdk-21/bin/java 2100 manual mode Press <enter> to keep the current choice[*], or type selection number:
输入对应编号后回车即可切换。同样的方法用于javac:
sudo update-alternatives --config javac
查看当前alternatives状态:
update-alternatives --display java
5.5.2 使用环境变量切换(所有Linux发行版通用)
在~/.bashrc中定义便捷函数进行切换:
# ===== 多版本JDK管理函数 =====
# 定义各版本路径
export JAVA8_HOME=/usr/lib/jvm/jdk-8
export JAVA11_HOME=/usr/lib/jvm/jdk-11
export JAVA17_HOME=/usr/lib/jvm/jdk-17
export JAVA21_HOME=/usr/lib/jvm/jdk-21
# 默认使用Java 21
export JAVA_HOME=$JAVA21_HOME
export PATH=$JAVA_HOME/bin:$PATH
# 切换函数
java_switch() {
local version=$1
case $version in
8)
export JAVA_HOME=$JAVA8_HOME
;;
11)
export JAVA_HOME=$JAVA11_HOME
;;
17)
export JAVA_HOME=$JAVA17_HOME
;;
21)
export JAVA_HOME=$JAVA21_HOME
;;
*)
echo "用法: java_switch {8|11|17|21}"
return 1
;;
esac
export PATH=$JAVA_HOME/bin:$(echo $PATH | sed "s|$JAVA_HOME/bin:||g")
java -version
}
使用方法:
java_switch 17 # 切换到Java 17 java_switch 21 # 切换回Java 21
六、JDK目录结构详解
安装完成之后,了解JDK的目录结构有助于理解Java的运行环境和工作原理。以下是JDK 21的典型目录结构:

各目录详细说明:
| 目录/文件 | 说明 |
|---|---|
| bin/ | 存放JDK的所有可执行工具,包括java、javac、jar、javadoc、jshell、jlink等。这些是开发者日常使用频率最高的工具。 |
| conf/ | Java运行时配置文件的存放位置,包含net.properties(网络配置)、security/(安全策略文件)、logging.properties(日志配置)等。 |
| include/ | C/C++语言头文件,用于开发JNI(Java Native Interface)程序。包含jni.h、jvmti.h等。 |
| lib/ | JDK的核心类库所在的目录。从Java 9引入模块系统后,运行时类主要位于lib/modules文件(一个二进制文件)中。此外还包含src.zip(JDK类库源码)和ct.sym(编译时类型符号表)。 |
| jmods/ | 存放JMOD格式的Java模块文件。JMOD是Java模块系统的打包格式,每个.jmod文件对应一个Java模块(如java.base.jmod、java.sql.jmod等)。 |
| legal/ | 各模块和组件的开源许可证声明文件。 |
| release | 纯文本文件,记录了JDK的完整版本信息,包括构建号、操作系统、架构等。 |
对比Java 8及以前版本:在Java 8中,lib目录下有tools.jar(编译工具)、dt.jar(设计时API)、rt.jar(运行时核心类);JDK根目录下还包含一个独立的jre/子目录。从Java 9开始,这些都被模块系统所取代,JRE不再作为独立目录存在,而是集成在JDK中。
七、IDE集成验证
安装完JDK后,需要在IDE中配置和验证,以确保开发环境可以使用。本节以IntelliJ IDEA和VS Code为例。
7.1 IntelliJ IDEA配置
步骤一:打开项目SDK设置
打开IntelliJ IDEA,依次点击:File -> Project Structure -> Project(快捷键:Ctrl+Alt+Shift+S)。
步骤二:设置Project SDK
在"SDK"下拉框中,如果JDK已被IDEA自动检测到,可以直接选择。如果未显示,点击"Add SDK" -> “JDK”,浏览到JDK的安装目录。
| 平台 | 默认JDK路径示例 |
|---|---|
| Windows | D:\DevTools\Java\jdk-21 |
| macOS | /Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home |
| Linux | /usr/lib/jvm/jdk-21 |
步骤三:设置Language Level
选择与JDK版本对应的"Language Level"(如"21 - Record patterns, pattern matching for switch"等),确保可以使用相应版本的语言特性。
步骤四:验证编译与运行
创建一个简单的Java类,点击绿色的运行按钮或使用快捷键Shift+F10运行。如果程序正常输出,则说明IDE已正确集成JDK。
7.2 Visual Studio Code配置
VS Code通过Extension Pack for Java来支持Java开发。
步骤一:安装扩展
- 打开VS Code
- 点击左侧Extensions图标(或Ctrl+Shift+X)
- 搜索"Extension Pack for Java"并安装
步骤二:配置JDK路径
打开VS Code设置(Ctrl+,),搜索java.home,或直接在settings.json中添加:
{
"java.configuration.runtimes": [
{
"name": "JavaSE-21",
"path": "D:/DevTools/Java/jdk-21",
"default": true
}
]
}步骤三:验证
创建.java文件,在代码编辑区应该能看到语法高亮和智能提示。按F5或点击"Run"按钮测试编译运行。
7.3 IDE验证清单
| 验证项 | 正常表现 | 异常现象 |
|---|---|---|
| SDK/模块识别 | IDE自动检测到已安装的JDK | IDE报告"No SDK"或"SDK is not configured" |
| 代码编译 | 无错误,生成.class文件 | "Cannot find compiler"或编译错误 |
| 代码运行 | 控制台输出正确结果 | "Java not found"或运行时错误 |
| 智能提示 | 输入代码时有补全提示 | 无代码补全,无错误提示 |
| 构建工具 | Maven/Gradle可正常构建 | 报错"JAVA_HOME not found" |
八、常见安装问题与故障排查
8.1 问题速查表
| 序号 | 问题现象 | 可能原因 | 解决方法 |
|---|---|---|---|
| 1 | java 不是内部或外部命令 | PATH变量未配置或配置错误 | 检查PATH中是否包含%JAVA_HOME%\bin(Windows)或$JAVA_HOME/bin(Unix系) |
| 2 | javac 不是内部或外部命令,但java可用 | 安装了JRE而非JDK,或PATH中JRE的优先级高于JDK | 安装完整JDK,确保JDK的bin目录在PATH中靠前 |
| 3 | java -version显示的版本与预期不符 | 系统中存在多个Java版本,PATH优先级问题 | 检查PATH顺序,移除不需要的Java路径,或使用全路径调用 |
| 4 | JAVA_HOME环境变量没有生效 | 修改环境变量后未重启命令行窗口 | 关闭并重新打开命令行窗口;或执行refreshenv(Windows)或source命令(Unix系) |
| 5 | Error: A JNI error has occurred | 类文件由更高版本的JDK编译 | 使用匹配的JDK版本运行,或带--release参数编译 |
| 6 | Unable to locate a Java Runtime (macOS) | macOS未正确识别JDK安装 | 执行sudo ln -sfn创建符号链接到/Library/Java/JavaVirtualMachines/ |
| 7 | Linux上安装后无法运行java | 软件包安装不完整 | 确认安装的是-devel包(RHEL系)或-jdk包(Debian系),而非只含JRE的包 |
| 8 | IDE找不到JDK | IDE配置问题或SDK路径不正确 | 在IDE中手动指定JDK安装路径 |
| 9 | 安装过程中权限被拒 | 缺少管理员/root权限 | Windows以管理员身份安装,Linux/macOS使用sudo |
| 10 | Apple Silicon Mac上Java程序运行缓慢 | 安装了x64版本的JDK(通过Rosetta 2转译运行) | 安装aarch64版本的JDK以获得原生性能 |
8.2 详细排查步骤
问题一:命令行提示"java不是内部或外部命令"
问题二:版本混乱
查看系统上所有Java可执行文件的位置:
# Windows where java # Linux/macOS which -a java
如果发现有多个位置,检查每个位置对应的版本:
# 使用完整路径查看版本 /usr/bin/java -version /usr/local/bin/java -version
然后清理不需要的Java条目,删除旧版本的PATH引用,或将需要的版本移动到PATH的最前面。
问题三:macOS上Homebrew安装的JDK无法被IDE识别
这是因为Homebrew的OpenJDK采用"keg-only"安装策略。解决方法:
# 创建到标准JVM路径的符号链接 sudo ln -sfn $(brew --prefix)/opt/openjdk@21/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-21.jdk
执行后,IDE应该可以自动检测到这个JDK。
问题四:Linux包管理器安装的JDK缺少javac
确认安装的是开发包而非仅运行时包:
# Debian/Ubuntu dpkg -l | grep jdk # 如果只看到"jre"字样,需要安装开发包 sudo apt install openjdk-21-jdk -y # RHEL/CentOS rpm -qa | grep jdk # 如果只看到"jre"字样,需要安装开发包 sudo dnf install java-21-openjdk-devel -y
九、各平台多版本JDK管理总结
在实际开发中,经常需要在一台机器上使用不同的JDK版本。下表对各平台的多版本管理方案进行汇总:
| 平台 | 推荐方案 | 原理 | 便利度 |
|---|---|---|---|
| Windows | 环境变量切换 + 批处理脚本 | 修改JAVA_HOME变量指向不同JDK目录,动态调整PATH | ★★★★☆ |
| macOS | Shell别名切换 | 利用/usr/libexec/java_home工具获取各版本路径,通过Shell别名快速切换 | ★★★★★ |
| Linux(Debian系) | update-alternatives | Linux系统的标准替代品管理工具,维护/etc/alternatives/下的符号链接 | ★★★★★ |
| Linux(通用) | 环境变量切换 + Shell函数 | 在.bashrc中定义切换函数,修改当前Shell中的JAVA_HOME和PATH | ★★★★☆ |
各平台的通用思维模型:
从原理上看,无论是哪个平台,"多版本JDK管理"本质上都是在管理以下三件事:
- 安装位置:将不同版本的JDK安装在不同目录中
- 环境变量指向:通过某种机制将
JAVA_HOME和PATH指向当前需要的版本 - 快速切换:提供便捷的命令或工具来切换指向
理解了这个模型,就能在任何平台上灵活管理多个JDK版本。
十、安装后建议操作
10.1 验证清单
完成安装和配置后,请依次确认以下各项全部通过:
java -version显示正确的版本号javac -version显示正确的版本号echo $JAVA_HOME(或echo %JAVA_HOME%)显示正确的安装路径- 能够编译并运行一个简单的HelloWorld程序
- IDE中能够识别并使用该JDK
- 如果安装了多个版本,能够成功切换
10.2 性能优化建议
配置JVM堆内存:根据机器物理内存大小,可以在环境变量中设置默认的JVM选项:
# 在.bashrc或.zshrc中添加 export _JAVA_OPTIONS="-Xms256m -Xmx2048m"
启用CDS归档:类数据共享(CDS)可以减少JVM的启动时间:
# 生成共享归档文件(仅需执行一次) java -Xshare:dump
关闭不必要的JVM功能:对于不需要的部分,可以在安装时跳过或在运行时禁用。
10.3 保持JDK更新
定期检查JDK的安全更新和新版本发布,确保使用最新补丁:
# Debian/Ubuntu sudo apt update && sudo apt upgrade # RHEL/CentOS/Fedora sudo dnf update # macOS (Homebrew) brew update && brew upgrade # Windows # 访问下载页面手动下载新版本安装包
本章关键词回顾
| 关键词 | 英文 | 说明 |
|---|---|---|
| JDK | Java Development Kit | Java开发工具包,包含编译器、JVM、核心类库等 |
| JRE | Java Runtime Environment | Java运行环境,仅包含运行Java程序所需组件 |
| OpenJDK | Open Java Development Kit | Java的开源参考实现 |
| JAVA_HOME | Java Home Directory | 指向JDK安装根目录的环境变量 |
| PATH | Path Variable | 操作系统查找可执行文件的路径列表 |
| CLASSPATH | Class Path | JVM查找类文件的搜索路径 |
| javac | Java Compiler | Java源代码编译器 |
| JVM | Java Virtual Machine | Java虚拟机,执行Java字节码 |
| LTS | Long Term Support | 长期支持版本,提供最长时间的更新维护 |
| Homebrew | — | macOS上的开源包管理器 |
| update-alternatives | — | Debian/Ubuntu系统的多程序版本管理工具 |
| JNI | Java Native Interface | Java本地编程接口,用于调用C/C++代码 |
| JShell | Java Shell | Java交互式编程环境(REPL) |
思考与练习
- 环境排查:在你的计算机上检查是否已安装Java。如果已安装,确定它是JDK还是仅JRE,并确认其版本号。如果安装了多个版本,尝试找出所有版本并记录它们的安装路径。
- 全新安装:根据本章教程,在你的操作系统上安装Java 21 JDK(选择Eclipse Temurin发行版),完成从下载到验证的全流程。
- 多版本实践:在已安装Java 21的基础上,再安装一个Java 17 JDK。尝试在命令行中切换两个版本,并分别用
java -version验证切换效果。 - 环境变量理解:思考
JAVA_HOME、PATH和CLASSPATH三者的区别和各自的作用。尝试回答:如果只设置PATH而不设置JAVA_HOME,哪些场景会出问题? - IDE验证:在你的IDE(IntelliJ IDEA、VS Code或Eclipse)中,手动配置刚安装的JDK,创建一个项目并编译运行,确保整个工具链正常。
- 目录探索:打开JDK的安装目录,浏览
bin/和lib/目录,找到javac和src.zip文件。查阅release文件中的版本信息,记录构建号和构建日期。 - 故障模拟:尝试临时删除或重命名
JAVA_HOME环境变量,然后在命令行中执行java -version和javac -version,观察会有什么现象。之后恢复环境变量设置。
以上就是Windows/Linux/Mac下JDK完整安装下载流程的详细内容,更多关于Windows/Linux/Mac JDK安装下载的资料请关注脚本之家其它相关文章!
相关文章
详解Lombok安装及Spring Boot集成Lombok
这篇文章主要介绍了详解Lombok安装及Spring Boot集成Lombok,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-03-03
Java 实现 ReAct Agent工具调用与推理循环的过程
文章介绍了Agent的概念,与普通LLM的区别,并详细讲解了ReAct模式,包括定义工具、ReAct Prompt模板、构建推理循环和工具执行逻辑,还对比了j-langchain和LangChain Python的特点,强调了j-langchain的透明度和可调试性2026-04-04


最新评论