核心步骤是设置 JAVA_HOME 变量,并将其 bin 目录添加到系统的 PATH 变量中。

macOS 从 Catalina (10.15) 版本开始,默认的终端 Shell 从 bash 切换到了 zsh。因此,你需要先确定你正在使用的 Shell,然后编辑对应的配置文件。


步骤一:查找 JDK 的安装路径

在 Mac 上,你不需要手动寻找 JDK 的路径。系统提供了一个很方便的工具 /usr/libexec/java_home 来动态获取当前最优的 JDK 路径。

  1. 打开终端 (Terminal)
  2. 运行以下命令来获取当前默认(通常是最高版本)的 JDK 主目录路径:
    /usr/libexec/java_home
    
    你会得到类似这样的输出,请复制它,下面会用到:
    /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
    

优点:使用这个命令而不是硬编码一个具体路径(如 .../jdk-17.jdk/...),意味着当你未来升级或安装新的 JDK 时,这个环境变量配置无需修改,它会自动指向新的默认版本。


步骤二:确定你的 Shell 类型

在终端中输入以下命令:

echo $SHELL
  • 如果输出包含 /bin/zsh,那么你正在使用 Zsh
  • 如果输出包含 /bin/bash,那么你正在使用 Bash

步骤三:编辑对应的 Shell 配置文件

根据上一步的结果,选择相应的操作。

情况 A:如果你使用 Zsh (macOS Catalina 及更新版本)

你需要编辑 ~/.zshrc 文件。

  1. 打开或创建配置文件
    使用一个简单的文本编辑器(如 nano)来编辑文件。

    nano ~/.zshrc
    

    如果文件是新建的,窗口会是空白的,这很正常。

  2. 添加环境变量配置
    将下面两行代码粘贴到文件的末尾。

    # Setting JAVA_HOME for JDK
    export JAVA_HOME=$(/usr/libexec/java_home)
    export PATH="$JAVA_HOME/bin:$PATH"
    
    • 第一行:设置 JAVA_HOME 变量,它的值是 java_home 命令的执行结果。
    • 第二行:将 JDK 的 bin 目录(包含了 java, javac 等命令)添加到系统 PATH 的最前面,这样系统会优先使用你指定的 JDK 版本。
  3. 保存并退出

    • 按下 Control + O (WriteOut)
    • Enter 键确认文件名。
    • 按下 Control + X 退出 nano 编辑器。
情况 B:如果你使用 Bash (macOS Mojave 及更早版本)

你需要编辑 ~/.bash_profile 文件。

  1. 打开或创建配置文件

    nano ~/.bash_profile
    
  2. 添加环境变量配置
    同样,将下面两行代码粘贴到文件的末尾。

    # Setting JAVA_HOME for JDK
    export JAVA_HOME=$(/usr/libexec/java_home)
    export PATH="$JAVA_HOME/bin:$PATH"
    
  3. 保存并退出

    • 按下 Control + O
    • Enter
    • 按下 Control + X

步骤四:让配置立即生效

你刚刚修改的配置文件只会在新的终端窗口中被加载。要让你当前的终端窗口也应用这些更改,执行以下命令:

  • 如果你用的是 Zsh
    source ~/.zshrc
    
  • 如果你用的是 Bash
    source ~/.bash_profile
    

或者,你也可以直接关闭当前的终端窗口并重新打开一个,效果是一样的。


步骤五:验证配置是否成功

在新的终端窗口或 source 过的窗口中,运行以下命令进行检查:

  1. 检查 JAVA_HOME

    echo $JAVA_HOME
    

    预期输出:应该会打印出你在第一步中看到的 JDK 路径,例如 /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home

  2. 检查 Java 版本

    java -version
    

    预期输出:应该会显示你默认 JDK 的版本信息。

  3. 检查 java 命令的路径

    which java
    

    预期输出:应该会显示 JAVA_HOME 路径下的 bin/java,例如 /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home/bin/java

如果以上命令的输出都符合预期,那么恭喜你,JDK 环境变量已经成功配置!

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

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

相关文章

硬件-音频学习DAY1——音箱材料选择:密度板为何完胜实木

每日更新教程,评论区答疑解惑,小白也能变大神!" 目录 一.音箱材料选择的关键因素 二.密度板的声学优势 三.材料稳定性的对比 四.生产工艺的适应性 五.成本与环保的平衡 六.特殊场景的例外情况 七.消费者选购指南 八.行业发展趋势…

微波(Microwave)与毫米波(Millimeter wave)简介

一、电磁波频段划分,微波与毫米波所属 二、微波 可以看出UHF及以上的频段都可以统称为微波。记得之前上微波技术实验课的时候会接触比巴掌还大的金属波导,后来每次看到微波技术的时候都还是感到陌生。今天突然想到,不像在手机里就能完成的5G频…

ObjectMapper教程

ObjectMapper 简介ObjectMapper 是 Jackson 库的核心类,用于 Java 对象与 JSON 数据之间的相互转换。它支持序列化(对象转 JSON)和反序列化(JSON 转对象),广泛应用于 REST API、数据存储和配置处理等场景。…

【Node.js安装注意事项】-安装路径不能有空格

问题描述:在项目中使用 nodemon时,出现了nodemon 启动问题:nodemon : 无法将“nodemon”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。解决办法:在网上找了很多教程,试了很多办法,什么重新配置环境…

Shader开发(六)什么是着色器

在前面的章节中,我们简要提到了着色器的概念,现在有了渲染管线的基础知识,我们可以更深入地理解着色器的真正含义。着色器(Shader)是运行在图形处理单元(GPU)上的专用程序,这与我们日…

操作系统-lecture4(进程的调度)

进程的切换 接下来需要了解两个问题 谁触发了进程切换进程切换的动作 中断技术 中断源 中断处理过程(陷阱机制) 特权指令和非特权指令 Privileged Instructions:特权指令 •The Instructions that can run only in Kernel Mode are called…

机器人程序优化

机器人程序优化核心摘要 本视频详细讲解了机器人程序优化的方法与实践,旨在提高程序的可读性和复用性。通过学习文件夹、子程序调用以及路点优化等核心概念,观众将掌握如何将复杂的机器人搬运程序进行结构化整理,使其更易于理解、调试和在不…

一套视频快速入门并精通PostgreSQL

PostgreSQL从入门到精通系列PostgreSQL数据库是一个对理论知识与操作能力并重的技术,想要快速入门PostgreSQL数据库,这两个方面都要重视。这里的PostgreSQL从入门到精通,是专门针对刚入门的新手小白而录制的一套,有理论讲解也有动…

供应商管理系统有哪些功能?

在企业供应链数字化体系中,供应商管理系统是连接企业与外部合作伙伴的核心枢纽。以鲸采云采购管理系统的供应商模块为例,其功能设计围绕 “全生命周期管理 风险防控 协同效率” 三大核心,通过技术手段解决传统供应商管理中的信息碎片化、流…

新手向:国内外大模型体验与评测

国内外大模型体验与评测技术详解 近年来,人工智能领域的大模型技术取得了突破性进展,以GPT-4、Claude、文心一言等为代表的大语言模型(LLM)已经成为行业热点。国内外科技巨头纷纷布局这一赛道:国外有OpenAI的GPT系列、Anthropic的Claude、Google的PaLM,国内则有百度的文…

深度解读 CSGHub:开源协议、核心功能与产品定位

在大模型时代,“可用”不再足够,企业更需要“可管”、“可控”、“可演进”的一体化解决方案。作为国产开源阵营的中坚力量,CSGHub 如何从“开源与协议”到“功能定位”层层打磨,满足不同行业对合规、安全和灵活部署的诉求&#x…

本土化DevOps实践新篇章:Gitee引领企业高效协作新时代

本土化DevOps实践新篇章:Gitee引领企业高效协作新时代 在数字化转型的浪潮席卷全球的当下,软件开发与运维的协同效率已经成为决定企业竞争力的关键因素。随着国内企业对于数据安全和合规性的要求日益严格,寻找一套既符合本土监管要求又能提升…

B树、B+树、红黑树区别

一、核心概念与性质对比1. B树(Balanced Tree)定位:多路平衡搜索树,专为磁盘存储优化核心性质:每个节点存储 k-1个键值和k个子节点指针(m/2 ≤ k ≤ m,m为阶数)所有叶子节点位于同一…

Spring AI 使用阿里百炼平台实现流式对话:基于 SSE 的实践

Spring AI阿里百炼平台实现流式对话:基于 SSE 的实践指南 在大模型应用开发中,流式对话是提升用户体验的关键特性。本文将详细介绍如何利用 Spring AI 结合 Spring Boot,基于 SSE(Server-Sent Events)协议实现高效的流…

Ubuntu lamp

Ubuntu lamp 前言 在Ubuntu安装lamp架构 我们了解到 lamp是完整的架构 我们前面了解到了 集合了Linux系统 apache MySQL 和PHP语言的完整架构 我们前面说了Centos7中编译安装 lamp 那么 我们去说一下在Ubuntu中安装 ‍ ‍ 安装apache2 ‍ apt直接安装apache2 apt -y install a…

开源向量LLM - Qwen3-Embedding

1 Qwen3-Embedding介绍 Qwen3-Embedding遵循 Apache 2.0 许可证,模型大小从0.6B到8B,支持32k长文本编码。 Model TypeModelsSizeLayersSequence LengthEmbedding DimensionMRL SupportInstruction AwareText EmbeddingQwen3-Embedding-0.6B0.6B2832K10…

云计算服务模式全解析:IaaS、PaaS、SaaS与DaaS的区别与应用

一、云计算概述 云计算是一种通过互联网提供计算服务的模式,其核心特点是输入/输出与计算不在同一主机上。一个完整的云计算环境由云端(计算设备)、计算机网络和终端(输入/输出设备)三部分组成,即"云…

qwen 多模态 预训练流程步骤详细介绍

Qwen(通义千问)是阿里云推出的大语言模型,其多模态预训练是一个复杂且专业的过程,虽然官方没有完全公开全部细节, 但从多模态大模型通用的预训练逻辑上,一般包含以下主要步骤: 数据准备 多模态数…

FastDDS (SharedMemory)

SharedMemSegment Start // Fast-DDS/src/cpp/utils/shared_memory/SharedMemSegment.hppclass SharedSegmentBase {内部类 start class Id { public:typedef UUID<8> type;Id(); // 返回共享内存变量的IDId(const Id& other); // 设置共享内存变量的IDvoid g…

sqli-labs:Less-5关卡详细解析

1. 思路&#x1f680; 本关的SQL语句为&#xff1a; $sql"SELECT * FROM users WHERE id$id LIMIT 0,1";注入类型&#xff1a;字符串型&#xff08;单引号包裹&#xff09;提示&#xff1a;参数id需以闭合 但有意思的是&#xff0c;php代码的输出语句不是如下这种…