当前位置: 首页 > article >正文

Mac 安装 Java JDK 完整教程:一篇文章讲透安装、配置、多版本管理

一、Java JDK 详解1.1 什么是 JDKJDKJava Development KitJava 开发工具包是 Oracle 公司提供的用于 Java 程序开发的完整软件包。它是 Java 开发者不可或缺的核心工具包含了编写、编译、调试和运行 Java 程序所需的一切组件。1.2 JDK 的核心组成JDK 主要由以下几个关键部分组成1. JREJava Runtime EnvironmentJava 运行时环境JRE 是 JDK 的子集提供 Java 程序运行所需的环境包含 JVMJava Virtual MachineJava 虚拟机和核心类库如果只需要运行 Java 程序而不进行开发仅安装 JRE 即可2. 开发工具JDK 提供了丰富的命令行工具其中最常用的包括工具命令功能说明javacJava 编译器将 .java 源文件编译为 .class 字节码文件javaJava 解释器启动 JVM 运行编译后的字节码文件jarJava 归档工具用于打包和管理 JAR 文件javadocAPI 文档生成器从源代码注释中生成 HTML 格式的文档jdbJava 调试器用于调试 Java 程序javap反编译工具查看类文件的反汇编信息jps查看当前运行的 Java 进程信息jstat监控 JVM 的统计信息如垃圾回收、类加载等3. 核心类库Java APIJDK 内置了庞大的类库集合为开发者提供了丰富的现成功能java.langJava 语言的核心类如String、Math、System等java.util集合框架、日期时间、随机数等工具类java.io文件输入输出操作java.net网络编程支持java.sql数据库访问接口javax.swing图形用户界面组件1.3 JDK 版本说明Java 的版本演进经历了几个重要阶段Java 8 (LTS)目前应用最广泛的长期支持版本稳定可靠Java 11 (LTS)继 Java 8 之后的长期支持版本引入了模块化系统Java 17 (LTS)最新的长期支持版本性能和安全均有显著提升Java 21 (LTS)最新 LTS引入了虚拟线程等重大特性LTSLong-Term Support指长期支持版本Oracle 会提供至少 8 年的维护和更新适合生产环境使用。1.4 JDK 与 JRE 的关系图┌─────────────────────────────────────────────────────────┐ │ JDK │ │ ┌───────────────────────────────────────────────────┐ │ │ │ JRE │ │ │ │ ┌─────────────────────────────────────────────┐ │ │ │ │ │ JVM │ │ │ │ │ └─────────────────────────────────────────────┘ │ │ │ │ 核心类库 (rt.jar) │ │ │ └───────────────────────────────────────────────────┘ │ │ 开发工具 (javac, jar, javadoc...) │ └─────────────────────────────────────────────────────────┘二、Mac 安装 Java JDK 详细步骤2.1 方法一通过 Homebrew 安装推荐Homebrew 是 Mac 上最流行的包管理器可以简化安装流程。步骤 1检查 Homebrew 是否已安装brew --version如果未安装执行以下命令安装 Homebrew/bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)步骤 2搜索可用的 Java 版本# 搜索所有 Java 相关包 brew search jdk # 或搜索特定版本 brew search openjdk步骤 3安装指定版本的 JDK# 安装最新版本的 OpenJDK brew install openjdk # 安装 Java 17 (LTS) brew install openjdk17 # 安装 Java 11 (LTS) brew install openjdk11 # 安装 Java 8 brew install openjdk8步骤 4创建符号链接如需要Homebrew 安装的 OpenJDK 通常会自动链接但某些版本可能需要手动处理# 对于 OpenJDK 17 sudo ln -sfn $(brew --prefix)/opt/openjdk17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk # 对于 OpenJDK 11 sudo ln -sfn $(brew --prefix)/opt/openjdk11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk # 对于 OpenJDK 8 sudo ln -sfn $(brew --prefix)/opt/openjdk8/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-8.jdk2.2 方法二从 Oracle 官网下载安装步骤 1访问 Oracle 官网访问Oracle JDK 下载页面步骤 2选择适合的版本选择 macOS 平台选择.dmg安装包格式下载 ARM64Apple Silicon或 x64Intel版本步骤 3安装 JDK双击下载的.dmg文件双击安装包图标按照安装向导完成安装安装完成后JDK 默认安装在/Library/Java/JavaVirtualMachines/目录下2.3 验证安装无论使用哪种安装方式安装完成后都需要验证# 查看 Java 版本 java -version # 查看 javac 编译器版本 javac -version # 查看 JDK 安装路径 /usr/libexec/java_home -V正常输出示例openjdk version 17.0.9 2023-10-17 LTS OpenJDK Runtime Environment (build 17.0.98-LTS) OpenJDK 64-Bit Server VM (build 17.0.98-LTS, mixed mode, sharing)三、环境变量配置3.1 确定 Shell 类型Mac 默认使用 zsh自 macOS Catalina 起首先确认当前使用的 Shellecho $SHELL输出/bin/zsh→ 使用 zsh配置文件为~/.zshrc输出/bin/bash→ 使用 bash配置文件为~/.bash_profile3.2 配置 JAVA_HOME步骤 1找到 JDK 安装路径# 获取 JDK 安装路径 /usr/libexec/java_home # 如果需要指定版本 /usr/libexec/java_home -v 17步骤 2编辑 Shell 配置文件# 如果是 zsh vim ~/.zshrc # 如果是 bash vim ~/.bash_profile步骤 3添加环境变量配置在文件末尾添加以下内容# JAVA_HOME 配置 export JAVA_HOME$(/usr/libexec/java_home) # 如果安装了多个版本可以指定特定版本 # export JAVA_HOME$(/usr/libexec/java_home -v 17) # 将 JAVA_HOME 添加到 PATH export PATH$JAVA_HOME/bin:$PATH步骤 4使配置生效# 根据实际 Shell 选择 source ~/.zshrc # 或 source ~/.bash_profile步骤 5验证环境变量# 验证 JAVA_HOME 是否设置成功 echo $JAVA_HOME # 验证 PATH 是否包含 Java echo $PATH | grep java # 再次验证 Java 命令 java -version javac -version3.3 多版本 Java 管理如果需要同时使用多个 Java 版本可以配置版本切换功能方法一使用 alias 快速切换在~/.zshrc中添加# Java 版本切换函数 function setjava() { export JAVA_HOME$(/usr/libexec/java_home -v $1) export PATH$JAVA_HOME/bin:$PATH echo Switched to Java $1 java -version } # 设置快捷别名 alias java8setjava 1.8 alias java11setjava 11 alias java17setjava 17使用方法# 切换到 Java 8 java8 # 切换到 Java 11 java11 # 切换到 Java 17 java17方法二使用 jEnv 管理# 安装 jEnv brew install jenv # 配置 jEnv echo export PATH$HOME/.jenv/bin:$PATH ~/.zshrc echo eval $(jenv init -) ~/.zshrc source ~/.zshrc # 添加已安装的 Java 版本 jenv add /Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home jenv add /Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/Home # 设置全局版本 jenv global 17 # 设置当前目录版本 jenv local 11四、验证与测试4.1 编写第一个 Java 程序创建HelloWorld.java文件public class HelloWorld { public static void main(String[] args) { System.out.println(Hello, Java JDK on Mac!); System.out.println(Java Version: System.getProperty(java.version)); System.out.println(Java Home: System.getProperty(java.home)); System.out.println(OS Name: System.getProperty(os.name)); } }4.2 编译与运行# 编译 Java 源文件 javac HelloWorld.java # 运行编译后的字节码文件 java HelloWorld预期输出Hello, Java JDK on Mac! Java Version: 17.0.9 Java Home: /Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home OS Name: Mac OS X4.3 查看编译后的文件# 查看目录内容 ls -la # 使用 javap 查看字节码信息 javap -c HelloWorld五、常见问题与解决方案5.1 “command not found: java”原因环境变量未正确配置解决方案# 检查 JDK 是否已安装 ls /Library/Java/JavaVirtualMachines/ # 重新配置环境变量 export JAVA_HOME$(/usr/libexec/java_home) export PATH$JAVA_HOME/bin:$PATH5.2 “Unable to locate a Java Runtime”原因系统未找到 Java 运行时解决方案# 安装 JDK brew install openjdk17 # 或创建符号链接 sudo ln -sfn $(brew --prefix)/opt/openjdk17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk5.3 版本冲突问题原因系统存在多个 Java 版本解决方案# 查看所有已安装版本 /usr/libexec/java_home -V # 明确指定使用的版本 export JAVA_HOME$(/usr/libexec/java_home -v 17)六、详细总结6.1 安装方式对比安装方式优点缺点适用场景Homebrew命令行操作版本管理便捷更新简单默认安装 OpenJDK非 Oracle 官方开发环境习惯包管理的用户Oracle 官网官方原版包含商业功能需要手动下载更新不便企业环境需要官方支持SDKMAN多版本管理强大切换灵活需要额外安装需要频繁切换版本的开发者6.2 关键要点回顾JDK 的核心价值JDK 不仅是运行 Java 程序的环境JRE更包含了完整的开发工具链javac、jar、javadoc 等是 Java 开发的基石。环境配置的重要性正确配置 JAVA_HOME 和 PATH 是保证 Java 开发工具正常运行的前提这些变量告诉操作系统去哪里寻找 Java 命令和库文件。版本选择建议个人学习推荐 Java 17 或 Java 21最新 LTS企业开发Java 8 或 Java 11生态成熟兼容性好尝鲜体验Java 21新特性探索多版本管理对于需要维护多个项目的开发者掌握多版本管理能力至关重要可以通过 jEnv 或自定义函数实现快速切换。6.3 后续学习建议完成 JDK 安装与环境配置后可以继续学习构建工具Maven 或 Gradle用于项目依赖管理和构建IDE 集成IntelliJ IDEA、Eclipse 或 VS Code 中配置 JDK版本控制Git 与 GitHub 的协作开发框架学习Spring Boot 等主流框架的开发实践通过本教程成功在 Mac 上完成了 Java JDK 的安装和环境配置。这是 Java 开发之路的第一步也是至关重要的一步。配置完成后就可以开始编写、编译和运行 Java 程序开启 Java 开发之旅了。

相关文章:

Mac 安装 Java JDK 完整教程:一篇文章讲透安装、配置、多版本管理

一、Java JDK 详解1.1 什么是 JDK?JDK(Java Development Kit,Java 开发工具包)是 Oracle 公司提供的用于 Java 程序开发的完整软件包。它是 Java 开发者不可或缺的核心工具,包含了编写、编译、调试和运行 Java 程序所需…...

G-Helper风扇控制完全指南:轻松解决华硕笔记本散热异常问题

G-Helper风扇控制完全指南:轻松解决华硕笔记本散热异常问题 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Stri…...

森利威尔SL3041B替换LM5018 100V降压3.3V5V12V恒压芯片

在工业、汽车及电池供电的电子系统中,高压降压转换器的选择往往需要在性能、可靠性与成本之间取得平衡。传统上,LM5018等进口芯片凭借其高输入电压范围和稳定的性能占据一定市场,但随着国内半导体技术的成熟,国产替代方案已具备与…...

VASP表面建模进阶:利用现代脚本工具实现Slab模型原子选择性固定(POSCAR高效处理)

1. 为什么需要自动化处理POSCAR文件 在计算材料学领域,VASP作为第一性原理计算的黄金标准工具,其输入文件POSCAR的准确性直接决定了计算结果的可靠性。传统手动处理方式存在几个致命缺陷:首先,用Excel手工标记原子固定状态极易出错…...

Clawdbot 是如何实现永久记忆的?

下文是如何构建的在深入探讨记忆之前,我们先来理解模型在每次请求时能看到什么:[0] 系统提示词(静态指令 条件指令) [1] 项目上下文(引导文件:AGENTS.md、SOUL.md 等) [2] 对话历史&#xff08…...

notepad-- Markdown实时预览功能高效使用全攻略

notepad-- Markdown实时预览功能高效使用全攻略 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- 作为一款支持Windows、…...

FanControl终极指南:如何免费掌控电脑风扇,告别噪音困扰

FanControl终极指南:如何免费掌控电脑风扇,告别噪音困扰 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHu…...

客服机器人系统会不会发生宕机?Agent开放平台保障有哪些,数据安全不过关能赔?

在电商和数字化服务高速发展的今天,企业每天面对海量客户咨询。传统人工客服难以应对高峰期压力,而智能客服机器人系统成为重要解决方案。许多商家关心一个核心问题:客服机器人系统会不会发生宕机?一旦系统出现故障,是…...

昇腾910B分布式微调避坑指南:从SSH免密到权重合并的5个常见问题

昇腾910B分布式微调实战避坑手册:5个关键环节的深度解析 当你在深夜的机房盯着屏幕上闪烁的错误日志,第八次尝试启动分布式微调任务却依然卡在SSH认证环节时,那种混合着焦虑与挫败的感受,我太熟悉了。这不是又一篇按部就班的操作手…...

将大疆无人机GPS数据接入ROS:一份从PSDK C++示例到sensor_msgs/NavSatFix话题的完整改造指南

大疆无人机GPS数据与ROS深度集成实战指南 1. 系统架构设计与环境准备 在机器人导航系统中,高精度定位数据是核心要素之一。大疆Matrice 350 RTK无人机搭载的GPS/RTK模块能够提供厘米级定位精度,而ROS(Robot Operating System)作为…...

大学物理电磁场公式

1,毕奥-萨伐尔定律 2,安培定律(电流连续性) 3,库伦定律 如果两个电荷电量为q1和q2,距离为r,它们受到相互间作用力F 同种电荷互相吸引,不同电荷相互排斥; 电荷作用力大小与电荷大小成正比,与距离平方成反比; 作用力方向与电荷连线方向相反或一致 4,法拉第定律 5…...

别再被芯片手册吓到!用74HC595手把手教你读懂时序图(附示波器实测波形)

从零破解74HC595时序图:示波器实战与代码调优指南 第一次翻开74HC595的数据手册时,那些纵横交错的箭头、虚线、时间参数让我彻底懵了。作为电子爱好者,我们常被告知"要严格按照时序图操作",但没人告诉我们这些符号究竟对…...

快速验证dify部署方案:用快马生成环境检查与部署脚本原型

最近在折腾dify的本地部署,发现环境配置这块特别容易踩坑。作为一个开源AI应用开发平台,dify的部署涉及Python版本、Docker环境、端口占用等一系列依赖项检查,手动操作既繁琐又容易遗漏步骤。正好发现InsCode(快马)平台能快速生成这类工具的原…...

​如何选择专业的液晶面板废气治理厂家

从智能手机到超高清大屏,液晶面板已成为信息时代不可或缺的核心组件。然而,在其精密制造过程中,光刻、显影、刻蚀等工序会产生大量成分复杂的有机废气、酸性气体及含尘废气。随着环保标准日益严格及面板厂产能不断扩张,【液晶面板…...

电子工程师必看:MOS管、三极管、IGBT选型指南(附实际电路设计案例)

电子工程师必看:MOS管、三极管、IGBT选型指南(附实际电路设计案例) 在电子设计的世界里,选择合适的功率开关器件往往决定着整个电路的成败。作为一名电子工程师,我曾在多个项目中因为选型不当而付出惨痛代价——从简单…...

router.push(‘/‘)跳转不触发重定向

我来帮你分析为什么 router.push(/) 没有按照预期跳转到 /fenlei 路径。 首先让我查看相关的代码文件: router/index.js{path: /,component: Layout,redirect: /fenlei},已查看文件 index.vue 225-240 已查看文件 index.js 65-85 现在让我查看更多上下文&#xff0c…...

Harness:AI Agent 走向生产级的关键基础设施

摘要随着大语言模型能力持续增强,AI Agent 正从概念验证和演示场景,逐步进入复杂任务交付与生产系统落地阶段。然而,在长周期、高复杂度任务中,Agent 仍普遍面临连贯性不足、自我评估失真、结果不可控等问题。实践表明&#xff0c…...

华为OD机考双机位C卷 - 数字游戏 (Java)

# 数字游戏 2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 华为OD机试双机位C卷真题目录(Java)点击查看: 【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(Java题解) 题目描述 小明玩一个游戏。 系统发1+n张牌,每张牌上有一个整数。 第一张给…...

PlugY:重塑暗黑破坏神2单机体验的技术突破

PlugY:重塑暗黑破坏神2单机体验的技术突破 【免费下载链接】PlugY PlugY, The Survival Kit - Plug-in for Diablo II Lord of Destruction 项目地址: https://gitcode.com/gh_mirrors/pl/PlugY 一、问题篇:暗黑破坏神2单机模式的技术痛点 作为一…...

基于n8n的春联生成模型自动化工作流设计

基于n8n的春联生成模型自动化工作流设计 春联作为传统文化的重要组成部分,每年春节都面临着巨大的创作需求。传统手工创作方式效率低下,而AI技术为这一场景带来了全新的解决方案。本文将介绍如何利用n8n构建春联生成模型的自动化工作流,实现从…...

猫抓:网页资源获取工具的技术革新与实战应用

猫抓:网页资源获取工具的技术革新与实战应用 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字化时代,我们每天浏览大量…...

扑兔AI营销获客:AI文案缺乏人味儿的技术原因与优化路径

AI生成的文案,常表现出语言生硬、段落跳跃、事实信息不准确等问题。根本原因在于,多数AI写作工具基于文本拼接逻辑,而非模拟人类写作的完整思维过程——它们不知道写给谁看、没有逻辑链条、不核实事实。扑兔AI软文生成采用12步真人级创作流程…...

教育培训品牌视觉体系全攻略:5步打造统一、专业、让人过目不忘的品牌形象

教育培训机构的品牌视觉是否混乱,直接影响家长和学员的第一印象。宣传海报用一种蓝,公众号封面又是另一种蓝,课程介绍册的字体也和官网不一样。这种视觉不统一的问题,会让品牌显得不够专业,降低信任感。今天分享一套用…...

CW32L012FOC开源项目推进

作为一枚合格的“职场摸鱼学”实践者(手动狗头),我坚决不建议在长假结束后立刻全身心扎进任务清单。那太不“可持续发展”了。 所以,今天上午,我可以理直气壮地把“整理工位”作为最高优先级。说得具体点,…...

如何提高YOLO8目标检测的准确性?

上面主要就是大致了解方法,省流请看最下面1.提高置信度阈值yolo predict modelyolov8n.pt source0 classes0 conf0.5​​​​ conf0.3(灵敏,但容易误检)​​​​ conf0.5(更准,误检少)​​​​ …...

AQRC智金未来:全球资产配置的算法革命已来

在康涅狄格州的格林威治(Greenwich),清晨的咖啡总是伴随着全球市场的开盘。这里不仅是顶级对冲机构的“隐居地”,更是AQRC智金未来核心策略的孵化场。很多人习惯于讨论涨跌,但对于智金未来而言,最迷人的数字…...

C语言:构造类型

内容提要构造类型结构体共用体/联合体构造类型数据类型基本类型/基础类型/简单类型整型短整型:short -- 2字节基本整型:int -- 4字节长整型:long -- 32位系统4字节/ 64位系统8字节长长整型:long long 8字节(大多数现代…...

001、性能优化基础:慢SQL诊断与执行计划分析

昨天凌晨又被告警短信吵醒了,线上某核心接口的P99响应时间飙到了3秒。登录服务器一看,MySQL的CPU已经跑满,processlist里堆了二十几个相同的查询——又是慢SQL惹的祸。这种场景咱们做后端开发的太熟悉了,今天就来聊聊怎么系统性地…...

C++高性能网络库ZLToolKit资源池源码解析:如何用智能指针实现对象复用与自动回收

C高性能网络库ZLToolKit资源池源码解析:智能指针实现对象复用与自动回收 在C高性能服务器开发中,频繁的对象创建与销毁往往是性能瓶颈之一。想象一下这样的场景:一个直播服务器每秒需要处理数万条消息,每条消息都需要临时创建对象…...

JVM 内存管理 2026:深度解析与调优实战

JVM 内存管理 2026:深度解析与调优实战我是 Alex,一个在 CSDN 写 Java 架构思考的暖男。看到新手博主写技术踩坑记录总会留言:"这个 debug 思路很 solid,下次试试加个 circuit breaker 会更优雅。"我的文章里从不说空话…...