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

大瑶姑娘_2769

大瑶姑娘_2769

2025-09-19

728人浏览

原创

答案:使用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配置文件(

fastgithub
fastgithub

提供本地代理服务器以加速 GitHub 访问,显著提升 Linux、macOS、Windows 下克隆、推送和下载的速度。

下载
~/.zshrc
或
~/.bash_profile
)中的
JAVA_HOME
路径。例如,如果你想从OpenJDK 17切换到OpenJDK 11:
  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,因为它兼顾了稳定、性能和新特性。但具体选择,还是要结合你项目的实际需求、团队的熟悉程度以及对新技术的接受度来综合判断。

相关专题

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

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

2025.08.06

2651

22

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

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

2026.01.26

477

25

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

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

2023.09.05

651

5

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

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

2023.10.12

1455

7

Java Spring Boot开发
Java Spring Boot开发

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

2025.08.19

5066

10

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

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

2025.12.22

436

5

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

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

2025.12.24

660

18

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

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

2026.02.11

405

24

Kotlin协程编程与Spring Boot集成实践
Kotlin协程编程与Spring Boot集成实践

本专题围绕 Kotlin 协程机制展开,深入讲解挂起函数、协程作用域、结构化并发与异常处理机制,并结合 Spring Boot 展示协程在后端开发中的实际应用。内容涵盖异步接口设计、数据库调用优化、线程资源管理以及性能调优策略,帮助开发者构建更加简洁高效的 Kotlin 后端服务架构。

2026.02.12

371

18

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
安装 Xdebug 并配置 phpstorm
安装 Xdebug 并配置 phpstorm

共1课时 | 190人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 20.6万人学习

好课诞生记
好课诞生记

共20课时 | 7.2万人学习