跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

macOS 使用 Homebrew 安装 Java 21 教程

介绍在 macOS 上使用 Homebrew Cask 安装 Eclipse Temurin Java 21 的方法。步骤包括更新 Homebrew、执行安装命令及验证版本。进阶部分讲解了如何通过 /usr/libexec/java_home 管理多版本 Java,并提供了常见问题排查指南,如权限拒绝和 IDE 识别问题。

活在当下发布于 2026/3/30更新于 2026/10/2499 浏览

在 macOS 上配置 Java 环境时,很多开发者会遇到 no bottle available 或环境变量配置失效的问题。本文将介绍目前最稳定、最推荐的安装方式:使用 Homebrew Cask 安装 Eclipse Temurin。

为什么选择 Temurin?

  • 兼容性好:前身为 AdoptOpenJDK,是目前最主流的 OpenJDK 发行版。
  • 安装简单:使用 Cask 安装会自动放入系统目录,无需手动配置繁琐的 PATH。
  • 识别率高:IntelliJ IDEA、Eclipse 等 IDE 可以直接识别,无需寻找隐藏路径。

🚀 安装步骤

1. 确保 Homebrew 已更新

在安装任何新软件包之前,建议先更新 Homebrew 索引:

brew update
2. 执行安装命令

直接在终端输入以下正确命令:

brew install --cask temurin@21

*注:使用 --cask 会直接下载预编译好的 .pkg 安装包,避开复杂的源码编译过程。

3. 验证安装

安装完成后,无需重启电脑,只需新开一个终端窗口或执行 source,然后输入:

java -version

预期输出:

openjdk version "21.x.x" … Runtime Environment Temurin-21…


🛠 进阶技巧:多版本管理

如果你电脑上同时需要 Java 8, 11 和 21,可以按照以下逻辑操作:

1. 安装其他版本
brew install --cask temurin@8
brew install --cask temurin@17
2. 快速切换版本

macOS 提供了一个强大的工具 /usr/libexec/java_home 来定位不同版本。你可以通过在 ~/.zshrc 中添加别名来快速切换:

# 编辑配置文件
nano ~/.zshrc

# 添加以下内容(按需开启)
export JAVA_21_HOME=$(/usr/libexec/java_home -v 21)
export JAVA_8_HOME=$(/usr/libexec/java_home -v 1.8)

# 默认使用 Java 21
export JAVA_HOME=$JAVA_21_HOME

# 保存退出后运行
source ~/.zshrc

❓ 常见问题排查

  • 提示 'Permission Denied'?
    安装 Cask 软件通常需要系统管理员权限,请在提示时输入你的 Mac 开机密码。
  • IDE 找不到 JDK?
    Temurin 默认安装在 /Library/Java/JavaVirtualMachines/。在 IntelliJ IDEA 中,点击 Project Structure -> SDKs -> + 号,直接指向该目录即可。
  • 之前手动删过 Java 删不干净?
    如果之前乱删导致安装失败,建议先进行彻底清理后再重试。

目录

  1. 为什么选择 Temurin?
  2. 🚀 安装步骤
  3. 1. 确保 Homebrew 已更新
  4. 2. 执行安装命令
  5. 3. 验证安装
  6. 🛠 进阶技巧:多版本管理
  7. 1. 安装其他版本
  8. 2. 快速切换版本
  9. 编辑配置文件
  10. 添加以下内容(按需开启)
  11. 默认使用 Java 21
  12. 保存退出后运行
  13. ❓ 常见问题排查

更多推荐文章

查看全部
  • 前缀和算法实战:和为 K 的子数组
  • 深入理解 Web Worker:Web 应用多线程实践
  • 基于 YOLOv8/v11 与 LLM 的 Web 视觉检测系统 (Django+Vue3)
  • 本地部署 Apache Answer 问答平台并实现公网访问
  • Python 结合 AI 辅助开发的进阶实践与案例
  • OpenClaw 的“龙虾热”:技术、落地与安全危机全解析
  • 如何构建企业级 RAG 系统
  • SmolVLA 多场景落地:太空机器人舱内维护任务的动作规划适配
  • C++ 继承机制详解:同名成员调用与隐藏规则
  • Java 全栈工程师面试实录:从基础到复杂场景
  • MCP 插件配置实战:browser-tools-mcp 集成指南
  • 2026 年 3 月 13 日 AI 热点:芯片竞争、Agent 爆发与安全争议
  • Open WebUI MCPo 技术解析:将 MCP 工具转换为 OpenAPI 接口
  • 昇腾 NPU 实战指南:部署与推理 CodeLlama
  • 10 款主流网络爬虫工具深度对比与选型指南
  • 基于 AirLLM 实现 4GB 显存环境下的 Qwen2.5-72B 本地推理
  • MCP 模型上下文协议:原理、架构与应用场景解析
  • 基于 n8n 与 MaaS 平台的智能写作工作流构建指南
  • OpenClaw 框架解析:AI Agent、RAG、MCP 与 Skills 核心概念梳理
  • Django REST Framework 企业级 API 架构实战

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online