从零开始:JDK 在 Windows、macOS 和 Linux 上的下载、安装与环境变量配置

前言

在进入 Java 世界之前,搭建一个稳定、可用的开发环境是每个开发者必须迈过的第一道门槛。JDK(Java Development Kit)作为 Java 程序开发的核心工具包,其正确安装与环境变量配置直接关系到后续编译、运行、调试等所有开发流程的顺利进行。

然而,对于初学者而言,面对 Windows、macOS、Linux 三大不同操作系统,JDK 的安装方式和环境变量配置方法各不相同,容易产生困惑。本文旨在提供一份全面、清晰、可操作性强的跨平台 JDK 安装配置指南,帮助你无论使用哪种操作系统,都能快速、准确地完成 JDK 的部署,为你的 Java 学习和开发之路打下坚实基础。

本文以当前广泛使用的长期支持版本 JDK 17 为例,详细演示从下载到验证的每一步操作,力求做到“手把手教学”,确保零基础用户也能顺利完成配置。


一、什么是 JDK?

JDK(Java Development Kit)是 Java 开发工具包,包含:

  • javac:Java 编译器
  • java:Java 运行时
  • javadoc:文档生成工具
  • jdb:调试工具
  • 核心类库(rt.jar 等)

只有正确安装并配置环境变量后,你才能在命令行中使用这些工具。

本文更新时间:2025 年 8 月 21 日
适用 JDK 版本:以 JDK 17(LTS 长期支持版本)为例,适用于 JDK 8、11、17、21 等主流版本。

二、JDK 下载

1. 官方下载地址

推荐使用 Oracle 或 OpenJDK 官方源:

  • Oracle JDK(需登录):https://www.oracle.com/java/technologies/downloads/
  • OpenJDK(推荐开源)
    • https://adoptium.net/(原 AdoptOpenJDK,强烈推荐)
    • https://jdk.java.net/(官方 OpenJDK)
    • https://corretto.aws/(Amazon Corretto)
    • https://www.azul.com/downloads/?package=jdk(Zulu JDK)

本文以 Eclipse Adoptium(Temurin) 提供的 OpenJDK 17 为例,免费、开源、跨平台。

2. 选择版本

进入 https://adoptium.net/ 后:

  1. 选择 Temurin 17(LTS)
  2. 选择你的操作系统(Windows/macOS/Linux)
  3. 选择架构:通常为 x64(64 位)
  4. 下载格式:
    • Windows:.msi(推荐)或 .zip
    • macOS:.pkg(推荐)或 .tar.gz
    • Linux:.tar.gz.rpm/.deb

三、各平台安装与配置

Windows 系统(以 Windows 10/11 为例)

1. 安装 JDK

方式一:使用 .msi 安装包(推荐新手)

  1. 双击下载的 .msi 文件(如 OpenJDK17U-jdk_x64_windows_hotspot_17.0.10_7.msi
  2. 点击 Next,接受协议
  3. 选择安装路径(建议:C:\Program Files\Eclipse Adoptium\jdk-17.0.10.7-hotspot
  4. 点击 Install,等待安装完成
  5. 安装完成后点击 Finish

.msi 安装包会自动配置部分环境变量,但仍建议手动检查。

方式二:使用 .zip 解压版(高级用户)

  1. 解压到指定目录,如 C:\Java\jdk-17
  2. 不自动配置环境变量,需手动设置
2. 配置环境变量(关键步骤)
  1. 打开环境变量设置

    • Win + R,输入 sysdm.cpl,回车
    • 或:右键“此电脑” → “属性” → “高级系统设置” → “环境变量”
  2. 新建系统变量 JAVA_HOME

    • 变量名:JAVA_HOME
    • 变量值:JDK 安装路径(如 C:\Program Files\Eclipse Adoptium\jdk-17.0.10.7-hotspot
    • 路径不要包含 bin 目录!
  3. 编辑 Path 变量

    • 在“系统变量”中找到 Path,点击“编辑”
    • 点击“新建”,添加:
      %JAVA_HOME%\bin
      
    • (可选)添加 JRE 路径(如果需要):
      %JAVA_HOME%\jre\bin
      
  4. 验证配置

    • 打开 CMD(命令提示符)或 PowerShell
    • 输入:
      java -version
      javac -version
      echo %JAVA_HOME%
      
    • 正常输出表示配置成功。

若提示“不是内部或外部命令”,请检查 Path 是否包含 %JAVA_HOME%\bin,并重启 CMD。

macOS 系统(以 macOS Sonoma 为例)

1. 安装 JDK

方式一:使用 .pkg 安装包(推荐)

  1. 双击 .pkg 文件(如 OpenJDK17U-jdk_x64_mac_hotspot_17.0.10_7.pkg
  2. 按照向导点击“继续”,输入管理员密码
  3. 安装路径默认为:/Library/Java/JavaVirtualMachines/temurin-17.jdk

方式二:使用 .tar.gz 解压(高级)

# 解压到指定目录
sudo mkdir -p /Library/Java/JavaVirtualMachines
sudo tar -xzf OpenJDK17U-jdk_x64_mac_hotspot_*.tar.gz -C /Library/Java/JavaVirtualMachines/
2. 配置环境变量

macOS 使用 zsh 作为默认 shell(macOS Catalina 及以后),配置文件为 ~/.zprofile~/.zshrc

  1. 打开终端(Terminal)

  2. 编辑配置文件:

    nano ~/.zprofile
    

    (或 nano ~/.zshrc

  3. 添加以下内容:

    # 设置 JAVA_HOME
    export JAVA_HOME=$(/usr/libexec/java_home -v 17)# 将 JDK 的 bin 目录加入 PATH
    export PATH=$JAVA_HOME/bin:$PATH# (可选)设置 JAVA_HOME 为固定路径(不推荐多版本时)
    # export JAVA_HOME="/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home"
    

    使用 /usr/libexec/java_home -v 17 可自动定位 JDK 17,适合多版本共存。

  4. 保存并退出:

    • Ctrl + O → 回车(保存)
    • Ctrl + X(退出)
  5. 使配置生效:

    source ~/.zprofile
    
  6. 验证配置

    java -version
    javac -version
    echo $JAVA_HOME
    

    输出应类似:

    openjdk version "17.0.10" 2025-04-15
    OpenJDK Runtime Environment Temurin-17.0.10+7 (build 17.0.10+7)
    OpenJDK 64-Bit Server VM Temurin-17.0.10+7 (build 17.0.10+7, mixed mode)
    

若使用旧版 macOS(bash shell),请编辑 ~/.bash_profile

Linux 系统(以 Ubuntu/Debian 为例)

1. 安装 JDK

方式一:使用 .tar.gz 包(通用方法)

# 1. 下载 OpenJDK 17
wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.10%2B7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.10_7.tar.gz# 2. 解压到 /opt(需要管理员权限)
sudo tar -xzf OpenJDK17U-jdk_x64_linux_hotspot_*.tar.gz -C /opt/# 3. 重命名(可选)
sudo mv /opt/jdk-17.0.10.7-hotspot /opt/jdk17

方式二:使用 APT 包管理器(Ubuntu/Debian)

# 更新包列表
sudo apt update# 安装 OpenJDK 17
sudo apt install openjdk-17-jdk# 验证安装位置(通常在 /usr/lib/jvm/)
ls /usr/lib/jvm/
2. 配置环境变量
  1. 编辑用户级配置文件(推荐):

    nano ~/.profile
    

    (或 ~/.bashrc,但 .profile 更通用)

  2. 在文件末尾添加:

    # 设置 JAVA_HOME(根据实际路径修改)
    export JAVA_HOME=/opt/jdk17
    # 或使用 APT 安装的路径:
    # export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64# 添加到 PATH
    export PATH=$JAVA_HOME/bin:$PATH# (可选)设置 JAVA_HOME 全局可用
    export JRE_HOME=$JAVA_HOME/jre
    
  3. 保存并退出(Ctrl+O, Enter, Ctrl+X

  4. 使配置生效:

    source ~/.profile
    
  5. 验证配置

    java -version
    javac -version
    echo $JAVA_HOME
    

    输出应显示 Java 17 版本信息。

若需系统级配置,可编辑 /etc/environment/etc/profile.d/java.sh

四、常见问题与解决方案

问题原因解决方案
javajavac 不是命令PATH 未包含 bin 目录检查 PATH 是否包含 %JAVA_HOME%\bin$JAVA_HOME/bin
JAVA_HOME 未定义环境变量未设置手动添加 JAVA_HOME 并重启终端
多版本冲突多个 JDK 同时存在使用 update-alternatives(Linux)或手动切换 JAVA_HOME
权限不足(Linux/macOS)解压目录权限问题使用 sudochown 修改权限
中文路径或空格路径含空格或特殊字符安装路径避免空格和中文

五、验证安装是否成功

无论哪个平台,运行以下命令:

java -version
javac -version
echo $JAVA_HOME      # Linux/macOS
echo %JAVA_HOME%     # Windows

输出应包含你安装的 JDK 版本(如 17.0.10)。

六、多版本 JDK 管理建议

  • Windows:通过修改 JAVA_HOMEPath 切换
  • macOS:使用 /usr/libexec/java_home -V 查看所有版本,通过 -v 11-v 17 切换
  • Linux:使用 update-alternatives 命令管理多个 JDK

七、总结

操作系统安装方式环境变量文件关键变量
Windows.msi / .zip系统环境变量JAVA_HOME, Path
macOS.pkg / .tar.gz~/.zprofileJAVA_HOME, PATH
Linux.tar.gz / APT~/.profileJAVA_HOME, PATH

只要按照本文步骤操作,你一定能成功配置 JDK 开发环境!

附录:推荐资源

  • Oracle JDK 下载
  • Eclipse Adoptium (Temurin)
  • OpenJDK 官网
  • Java 官方文档

结语

至此,我们已经完整地走过了在 Windows、macOS 和 Linux 三大主流操作系统上下载、安装和配置 JDK 的全过程。虽然不同系统的操作细节略有差异,但核心思路是一致的:找到 JDK 安装位置,设置 JAVA_HOME 指向该位置,并将 bin 目录添加到系统的 PATH 环境变量中

环境搭建看似是入门的第一步,实则至关重要。一个配置正确的 JDK 环境,是你后续学习 Java 基础语法、面向对象编程、使用 IDE(如 IntelliJ IDEA、Eclipse)、构建项目(Maven/Gradle)乃至进行企业级开发的基石。

希望这篇详尽的指南能够帮助你顺利解决环境配置问题,少走弯路。现在,你可以自信地打开终端或命令提示符,输入 java -version,看到熟悉的版本信息,然后满怀期待地编写你的第一个 Java 程序:

public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, Java World!");}
}

祝你在 Java 的学习和开发之旅中一切顺利!如果有任何疑问,欢迎随时交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/96385.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/96385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【音视频】芯片、方案、市场信息收集

系统级芯片安霸(Ambarella)Ambarella H22/H32:高端方案,支持8K/4K高帧率录制,低功耗,广泛用于GoPro Hero 11/12、Insta360等旗舰机型。 Ambarella A12/A10:早期主流方案,支持4K60fps…

中科米堆CASAIM提供机加工件来料自动化测量尺寸方案

机加工行业面临日益严格的质量追溯要求,来料质量的稳定性直接影响着后续生产效率与成品合格率。传统人工检测方式受限于接触式工具的测量精度与操作效率,难以应对小批量、多品种的现代生产需求。传统机加工件来料检测长期面临这些问题:其一&a…

MySQL只操作同一条记录也会死锁吗?

大家好,我是锋哥。今天分享关于【MySQL只操作同一条记录也会死锁吗?】面试题。希望对大家有帮助; MySQL只操作同一条记录也会死锁吗? 超硬核AI学习资料,现在永久免费了! 在 MySQL 中,死锁通常是由于多个事务对不同…

知识蒸馏 Knowledge Distillation 论文 Generalized Knowledge Distillation (GKD) 乘法法则、全概率公式、贝叶斯定理

知识蒸馏 Knowledge Distillation 论文 Generalized Knowledge Distillation (GKD) 乘法法则、全概率公式、贝叶斯定理 flyfish 代码实践 On-Policy Distillation of Language Models: Learning from Self-Generated Mistakes 设定(方便算数)&#x…

Fastjson 2.x踩坑——序列化Java字段为null值默认输出

先上无法实现效果的代码,我的目的是序列化时如果数字型字段为null则填0,尽可能保证数据整齐。 Data NoArgsConstructor AllArgsConstructor ToString JSONType(serializeFeatures {JSONWriter.Feature.WriteNulls,JSONWriter.Feature.WriteMapNullValue…

4G高负荷解决方案

4G高负荷解决方案 一、网络优化手段(低成本优先)参数优化 调整功率控制、负荷均衡参数。优化小区重选与切换参数,避免高负荷小区拥塞。负荷均衡 开启 MLB(Mobility Load Balancing,移动负荷均衡)。引导用户…

K8S 安装部署 Rocky Linux 10.0 + Docker + Containerd + Calico

Docker Containerd Flannel 安装部署K8S 系统环境准备 # 1. 设置主机名 hostnamectl set-hostname k8s-n1 && bash# hostnamectl set-hostname k8s-n2 && bash # hostnamectl set-hostname k8s-n3 && bash# 2. 删除系统自带的容器软件(可…

新华三H3CNE网络工程师认证—等价路由

等价路由就是“去同一个地方有多条路,时间一样近,快递站聪明地分拨送货”的技术!(网络不堵车,速度翻倍爽!)路由表中存在等价路由之后,前往该目的网段的IP报文路由器辉通过所有有效的…

DBLens 业界首创AI表结构变更审查,智能评估影响,助力开发效率跃升。

智能守护每一次变更:dblens AI 审查流程详解 在快速迭代的软件开发过程中,数据库结构变更是常见却高风险的操作。一次不经意的字段调整,可能引发线上故障、数据不一致甚至业务中断。为应对这一挑战,dblens 率先引入AI驱动的表结构…

窗口看门狗(WWDG)

窗口看门狗(WWDG)1. WWDG 简介作用:在应用跑飞、死循环、长时间被中断占用等异常时,强制复位 MCU,提高系统可靠性。时钟来源:来自 APB1 时钟 (PCLK1) 的分频(与 IWDG 的 LSI 独立时钟不同&#…

PyTorch API 6

文章目录torch.onnx概述基于 TorchDynamo 的 ONNX 导出器基于TorchScript的ONNX导出器贡献与开发torch.optim如何使用优化器构建优化器每个参数的选项执行优化步骤optimizer.step()optimizer.step(closure)基类算法如何调整学习率如何利用命名参数加载优化器状态字典权重平均法…

2025年09月计算机二级MySQL选择题每日一练——第二期

计算机二级中选择题是非常重要的,所以开始写一个每日一题的专栏。 答案及解析将在末尾公布! 今日主题:SQL 交互操作基础 1、有如下创建表的语句: CREATE TABLE tb_gs( gno CHAR(10) NOT NULL, sno CHAR(10) NOT NULL, gjob CH…

MySQL诊断系列(5/6):表结构与元数据查询——快速掌握数据库“DNA”

🔗 接上一篇《MySQL性能瓶颈定位》,今天我们来学习如何像查字典一样,快速、精准地了解任何数据库的内部结构。 当你接手一个新项目,或者需要排查一个不熟悉的模块时,你最需要的是什么? 不是代码&#xff0…

精准评估新纪元:AI得贤招聘官AI面试智能体6.3,重新定义AI面试

随着生成式AI技术爆发式发展,人力资源管理正经历从“信息化”到“智能化”的跃迁。据Gartner预测,2025年60%的企业将使用AI完成HR基础事务性工作。在这场变革中,AI得贤招聘官以其卓越的技术实力和产品能力,已成为行业智能化转型的…

MinerU:重新定义PDF智能提取的开源利器

MinerU:重新定义PDF智能提取的开源利器 ——告别传统工具的“鸡肋”体验,让文档处理真正高效智能 在数字化时代,PDF、Word等文档已成为信息传递的主要载体,但如何从这些格式中精准提取数据,却成了困扰无数人的难题。…

电脑芯片其实更偏向MPU不是CPU,GPU CPU NPU MPU MCU的区别

现代电脑的处理器(如 Intel i5)本质上是 MPU,因为它集成了 CPU 核心、缓存、定时器等,但我们日常仍习惯称其为 “CPU”电脑里的芯片(如 Intel i5、AMD Ryzen)通常被通俗地称为 “CPU”,但严格来…

Python爬虫XPath实战:电商商品ID的精准抓取策略

1. 引言 在电商数据爬取过程中,商品ID(Product ID)是最关键的字段之一,它通常用于唯一标识商品,并可用于构建商品详情页URL、价格监控、库存查询等场景。然而,不同电商网站的HTML结构差异较大,…

Web3:重构互联网秩序的下一代范式革命

Web3(即 Web 3.0)作为互联网发展的第三代形态,并非简单的技术迭代,而是一场围绕 “数据主权” 与 “价值分配” 的底层逻辑重构。它以区块链为核心骨架,融合分布式存储、密码学、人工智能等技术,旨在打破 W…

DeepSeek R2难产:近期 DeepSeek-V3.1 发布,迈向 Agent 时代的第一步

DeepSeek R2难产:近期 DeepSeek-V3.1 发布,迈向 Agent 时代的第一步 要说 AI 模型的江湖,这一年简直就是 「大模型修罗场」。 前脚 R2 传出难产的风声,后脚 DeepSeek 就甩出了一张大招牌:DeepSeek-V3.1。 这波操作不…

element-plus:el-tree ref初始化异常记录

文章目录描述问题解决记录一个tsx 下el-tree的小问题描述 <Dialog v-model"showEdit" :title"t(button.edit)" width"900" :maxHeight"650"><el-form :model"nowdata" class"dialog"><el-form-ite…