0

0

如何在Mac系统中安装OpenJDK并设置环境变量

P粉602998670

P粉602998670

发布时间:2025-09-19 14:11:01

|

688人浏览过

|

来源于php中文网

原创

答案:使用Homebrew安装OpenJDK并配置JAVA_HOME和PATH环境变量。首先通过/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安装Homebrew;然后执行brew install openjdk@17(或所需版本)进行安装;接着根据芯片架构编辑~/.zshrc(Apple Silicon为/opt/homebrew,Intel为/usr/local),添加export JAVA_HOME和export PATH语句指向OpenJDK路径;保存后运行source ~/.zshrc使配置生效;最后通过java -version和echo $JAVA_HOME验证。若需管理多版本,可手动修改JAVA_HOME路径或使用jenv工具;注意IDE和构建工具可能需独立配置JDK路径,且优先选择LTS版本以确保稳定性与兼容性。

如何在mac系统中安装openjdk并设置环境变量

要在Mac上安装OpenJDK并配置好环境变量,最直接有效的方法是利用Homebrew这个包管理器来完成安装,然后手动编辑你的shell配置文件,将

JAVA_HOME
路径指向新安装的OpenJDK,并将其添加到系统的
PATH
中,这样你的系统和开发工具就能正确识别并使用它了。

解决方案

在Mac上安装OpenJDK并设置环境变量,我通常会这么操作:

首先,确保你的系统已经安装了Homebrew。如果还没有,打开终端,执行

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
。这是Mac用户管理软件的利器,几乎是必备的。

接着,安装你需要的OpenJDK版本。比如,我个人比较常用OpenJDK 17,因为它是一个LTS(长期支持)版本,稳定且兼容性好。在终端输入:

brew install openjdk@17

如果你需要其他版本,比如OpenJDK 21,就改成

openjdk@21
。Homebrew会帮你处理好下载、解压和安装的过程。

安装完成后,Homebrew会提示你一些关于设置环境变量的信息,这部分非常关键。因为Mac系统默认的

java
命令可能指向苹果自己的旧版本JDK,或者你之前安装的其他Java版本。我们需要明确告诉系统和应用程序,我们想用的是刚刚安装的OpenJDK。

你需要找到你当前使用的shell配置文件。大多数新Mac系统默认使用Zsh,所以你需要编辑

~/.zshrc
文件。如果你还在用Bash,那就是
~/.bash_profile
。打开终端,用你喜欢的文本编辑器(比如
nano
code
)编辑它:

# 如果是Zsh
nano ~/.zshrc

# 如果是Bash
nano ~/.bash_profile

在文件的末尾,添加以下几行。注意,这里的路径需要根据你的Mac芯片架构(Intel或Apple Silicon)以及OpenJDK版本来调整。Homebrew通常会将Apple Silicon上的软件包安装到

/opt/homebrew
,而Intel Mac则在
/usr/local

# 设置 JAVA_HOME 环境变量
# 对于 Apple Silicon (M1/M2/M3) Mac,通常路径是 /opt/homebrew
# 对于 Intel Mac,通常路径是 /usr/local
# 请根据你安装的 OpenJDK 版本调整 @17 部分
export JAVA_HOME="/opt/homebrew/opt/openjdk@17/libexec/openjdk"

# 将 JAVA_HOME/bin 添加到 PATH 环境变量中,确保 Java 命令能被系统找到
export PATH="$JAVA_HOME/bin:$PATH"

# 如果你安装了多个 Homebrew 版本的 Java,可以通过以下命令切换
# 例如,要使用 openjdk@17,就取消注释下面这行
# export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"
# export JAVA_HOME=$(/usr/libexec/java_home -v 17) # 这种方式更通用,但需要确保 java_home 工具能找到

保存并关闭文件。为了让这些更改立即生效,你需要在终端中“重新加载”你的配置文件:

# 如果是Zsh
source ~/.zshrc

# 如果是Bash
source ~/.bash_profile

最后,验证一下是否设置成功。在终端输入:

java -version
echo $JAVA_HOME

如果

java -version
显示的是你刚刚安装的OpenJDK版本,
echo $JAVA_HOME
也显示了正确的路径,那么恭喜你,一切都搞定了。

Mac上管理多个Java版本,我应该怎么做?

在Mac上处理多个Java版本确实是个常见的需求,尤其当你同时维护一些老项目和新项目时。我个人觉得,Homebrew配合

JAVA_HOME
的灵活切换,是比较直接且可控的方式。

首先,明确一点,

JAVA_HOME
这个环境变量是很多Java应用程序、构建工具(比如Maven、Gradle)以及IDE(如IntelliJ IDEA、Eclipse)用来查找Java运行时环境(JRE)或开发工具包(JDK)的关键。当你切换
JAVA_HOME
时,实际上就是在告诉这些工具,现在应该使用哪个Java版本。

通过Homebrew,你可以轻松安装多个OpenJDK版本,比如

openjdk@11
openjdk@17
openjdk@21
。它们会被安装到不同的路径下,通常是
/opt/homebrew/opt/
(Apple Silicon)或
/usr/local/opt/
(Intel)。

要切换版本,最简单的方法就是修改你的shell配置文件(

~/.zshrc
~/.bash_profile
)中的
JAVA_HOME
路径。例如,如果你想从OpenJDK 17切换到OpenJDK 11:

iMuse.AI
iMuse.AI

iMuse.AI 创意助理,为设计师提供无限灵感!

下载
  1. 打开你的配置文件。
  2. 找到
    export JAVA_HOME="..."
    那一行。
  3. 将其修改为
    export JAVA_HOME="/opt/homebrew/opt/openjdk@11/libexec/openjdk"
    (根据你的系统和版本调整路径)。
  4. 保存文件。
  5. 在终端执行
    source ~/.zshrc
    (或
    .bash_profile
    )使其生效。
  6. 运行
    java -version
    确认。

这种手动修改的方式虽然直接,但频繁切换可能会有点繁琐。对于更复杂的场景,比如每个项目需要固定不同的Java版本,或者你不想每次都手动修改配置文件,可以考虑使用一些Java版本管理工具,例如

jenv
jenv
可以让你在全局、用户或项目级别设置Java版本,它通过修改
PATH
变量来生效,而不需要你手动管理
JAVA_HOME
。不过,
jenv
的安装和配置相对复杂一些,如果你只是偶尔切换,手动改
JAVA_HOME
也足够了。

另一个需要注意的点是,Homebrew在安装新版本的OpenJDK时,可能会提示你运行

brew link --force openjdk@xx
brew link
的作用是创建符号链接,让
/opt/homebrew/bin/java
指向特定版本的Java。但我个人更倾向于通过
JAVA_HOME
PATH
来管理,因为这样可以更明确地控制哪个版本的Java被优先使用,并且避免了Homebrew链接机制可能带来的意外冲突。

OpenJDK安装后,如何确认一切都配置妥当了?

安装完OpenJDK,并自以为设置好环境变量后,最怕的就是在跑项目时发现“Java找不到”或者“版本不对”的错误。所以,确认工作是必不可少的,而且有一些细节值得注意。

首先,最基本的验证命令是:

java -version
javac -version
echo $JAVA_HOME

java -version
会告诉你当前系统默认的Java运行时环境版本。
javac -version
则显示Java编译器的版本,这对于开发者来说很重要,因为它确认了JDK(而不仅仅是JRE)是否可用。
echo $JAVA_HOME
则直接打印出你设置的
JAVA_HOME
环境变量的值。这三个命令的结果应该都指向你期望的OpenJDK版本和路径。

如果

java -version
显示的版本不是你安装的,或者
echo $JAVA_HOME
为空或指向错误路径,那么通常有以下几个原因和排查方法:

  1. 没有
    source
    配置文件:
    这是最常见的错误。你修改了
    ~/.zshrc
    ~/.bash_profile
    ,但没有在当前终端会话中执行
    source
    命令让更改生效。每次修改后,或者打开新的终端窗口,都需要
    source
    一下。
  2. JAVA_HOME
    路径错误:
    仔细检查你设置的
    export JAVA_HOME="..."
    路径是否正确。Homebrew安装的OpenJDK路径通常是
    /opt/homebrew/opt/openjdk@xx/libexec/openjdk
    (Apple Silicon)或
    /usr/local/opt/openjdk@xx/libexec/openjdk
    (Intel)。一个小小的拼写错误或者版本号不对,都可能导致找不到。
  3. PATH
    变量顺序问题:
    export PATH="$JAVA_HOME/bin:$PATH"
    这行非常重要。它确保了
    $JAVA_HOME/bin
    目录在
    PATH
    变量中的优先级最高。如果你的
    $JAVA_HOME/bin
    被放在了其他Java安装路径的后面,系统可能会优先找到旧的Java版本。你可以通过
    echo $PATH
    来查看
    PATH
    变量的完整内容,确认
    $JAVA_HOME/bin
    是否在前面。
  4. IDE或构建工具的独立配置: 很多IDE(如IntelliJ IDEA)和构建工具(如Maven、Gradle)有自己的SDK或JDK配置。即使你系统级的
    JAVA_HOME
    设置正确,它们也可能使用自己内部的配置。你需要进入IDE的设置,找到“Project Structure”或“SDKs”等选项,确保你的项目或IDE本身使用的是正确的OpenJDK版本。对于Maven或Gradle,你可能需要在项目的
    pom.xml
    build.gradle
    中指定Java版本,或者确保它们能正确读取系统
    JAVA_HOME
  5. Homebrew链接问题: 偶尔,Homebrew的
    link
    unlink
    操作可能会导致一些混乱。如果你之前尝试过
    brew link
    不同版本的Java,并且没有正确
    unlink
    ,可能会导致符号链接指向错误。在这种情况下,可以尝试
    brew unlink
    所有OpenJDK版本,然后重新设置
    JAVA_HOME

遇到问题时,一步步排查,从最基础的

source
命令开始,然后检查路径,最后再考虑IDE或工具的配置,通常都能找到症结所在。

选择OpenJDK版本时,我需要考虑哪些因素?

选择OpenJDK版本,这事儿看似简单,但实际操作起来,尤其是在面对各种项目和需求时,确实需要一些考量。我个人在选择时,主要会关注以下几个方面:

首先是LTS(长期支持)版本。这是最核心的考量。目前,Java的LTS版本包括Java 8、11、17和最新的21。LTS版本意味着它们会获得更长时间的更新和维护支持,稳定性和安全性更有保障。对于企业级应用和长期维护的项目,我几乎总是推荐选择LTS版本。非LTS版本通常每六个月发布一次,包含最新的特性,但支持周期短,更适合尝鲜、实验性项目或那些能快速迭代更新的应用。

其次是项目兼容性。如果你正在处理一个遗留项目,它可能被锁定在Java 8或11上。强制升级到更新的版本可能会引入兼容性问题,比如API变更、库不兼容等。在这种情况下,你别无选择,只能使用项目要求的Java版本。对于新项目,我通常会推荐使用最新的LTS版本,比如Java 17或21,这样可以享受到新语言特性、性能优化和更现代的API。

再来是新特性和性能提升。每个新版本的Java都会带来语言层面的改进、JVM的性能优化以及新的API。例如,Java 17引入了密封类(Sealed Classes)、模式匹配的增强等,Java 21则带来了虚拟线程(Virtual Threads)等颠覆性功能。如果你想利用这些新特性来提升开发效率或应用性能,那么选择更新的LTS版本是明智的。但要记住,新特性通常也意味着你的团队需要学习和适应。

还有就是生态系统支持。你使用的框架、库和工具是否支持你选择的Java版本?大多数主流的框架(如Spring Boot)和工具(如Maven、Gradle)都会很快跟进最新的LTS版本。但在一些特定或小众的库中,可能对最新Java版本的支持会滞后。在做版本决策前,快速查阅一下你项目核心依赖的兼容性列表,是个好习惯。

最后,OpenJDK发行版的选择。通过Homebrew安装时,它通常会默认选择Adoptium(以前的AdoptOpenJDK)提供的OpenJDK版本,这是一个非常流行的、开源且社区支持良好的发行版。但市面上还有很多其他的OpenJDK发行版,比如Oracle OpenJDK(现在也有免费版本)、Azul Zulu、Red Hat OpenJDK等。它们在许可证、支持模型和一些特定优化上可能有所不同。对于大多数开发者来说,Adoptium提供的版本已经足够好用且可靠了。

总结一下,对于大多数日常开发和新项目,我倾向于推荐使用最新的LTS版本,比如Java 17或21,因为它兼顾了稳定、性能和新特性。但具体选择,还是要结合你项目的实际需求、团队的熟悉程度以及对新技术的接受度来综合判断。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

161

2025.08.06

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

89

2026.01.26

spring boot框架优点
spring boot框架优点

spring boot框架的优点有简化配置、快速开发、内嵌服务器、微服务支持、自动化测试和生态系统支持。本专题为大家提供spring boot相关的文章、下载、课程内容,供大家免费下载体验。

139

2023.09.05

spring框架有哪些
spring框架有哪些

spring框架有Spring Core、Spring MVC、Spring Data、Spring Security、Spring AOP和Spring Boot。详细介绍:1、Spring Core,通过将对象的创建和依赖关系的管理交给容器来实现,从而降低了组件之间的耦合度;2、Spring MVC,提供基于模型-视图-控制器的架构,用于开发灵活和可扩展的Web应用程序等。

411

2023.10.12

Java Spring Boot开发
Java Spring Boot开发

本专题围绕 Java 主流开发框架 Spring Boot 展开,系统讲解依赖注入、配置管理、数据访问、RESTful API、微服务架构与安全认证等核心知识,并通过电商平台、博客系统与企业管理系统等项目实战,帮助学员掌握使用 Spring Boot 快速开发高效、稳定的企业级应用。

73

2025.08.19

Java Spring Boot 4更新教程_Java Spring Boot 4有哪些新特性
Java Spring Boot 4更新教程_Java Spring Boot 4有哪些新特性

Spring Boot 是一个基于 Spring 框架的 Java 开发框架,它通过 约定优于配置的原则,大幅简化了 Spring 应用的初始搭建、配置和开发过程,让开发者可以快速构建独立的、生产级别的 Spring 应用,无需繁琐的样板配置,通常集成嵌入式服务器(如 Tomcat),提供“开箱即用”的体验,是构建微服务和 Web 应用的流行工具。

154

2025.12.22

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

273

2025.12.24

Spring Boot企业级开发与MyBatis Plus实战
Spring Boot企业级开发与MyBatis Plus实战

本专题面向 Java 后端开发者,系统讲解如何基于 Spring Boot 与 MyBatis Plus 构建高效、规范的企业级应用。内容涵盖项目架构设计、数据访问层封装、通用 CRUD 实现、分页与条件查询、代码生成器以及常见性能优化方案。通过完整实战案例,帮助开发者提升后端开发效率,减少重复代码,快速交付稳定可维护的业务系统。

35

2026.02.11

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

90

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.8万人学习

好课诞生记
好课诞生记

共20课时 | 6.4万人学习

swift开发文档
swift开发文档

共33课时 | 26.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号