macOS查看与安装Java JDK的完整步骤

 更新时间:2026年03月09日 08:52:54   作者:独隅  
本文详细介绍了在macOS上查看、安装、配置和管理Java JDK的步骤,包括使用官网下载、Homebrew、SDKMAN和IntelliJ IDEA内置JDK等方法,同时,还涵盖了环境变量配置、多版本管理以及常见问题解决等,需要的朋友可以参考下

这是一份完整的 macOS Java JDK 管理指南,涵盖查看、安装、配置、多版本管理等所有内容。

一、查看 Java 版本

1.1 检查是否已安装 Java

# 查看 Java 运行时版本
java -version

可能输出:

java version "17.0.8" 2023-07-18 LTS
Java(TM) SE Runtime Environment (build 17.0.8+9-LTS-211)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9-LTS-211, mixed mode, sharing)
输出情况含义
显示版本号已安装 Java
command not found未安装 Java
No Java runtime present需要安装

1.2 查看 Java 安装路径

# 查看当前 JAVA_HOME 路径
echo $JAVA_HOME

# 查看系统默认 Java 路径
/usr/libexec/java_home

1.3 查看已安装的所有 Java 版本

# 列出所有已安装的 JDK
/usr/libexec/java_home -V

输出示例:

Matching Java Virtual Machines (2):
    17.0.8 (arm64) "Oracle Corporation" - "Java SE 17.0.8"
        /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
    1.8.0_381 (arm64) "Oracle Corporation" - "Java SE 8"
        /Library/Java/JavaVirtualMachines/jdk1.8.jdk/Contents/Home

1.4 查看 Java 编译器版本

# 查看 javac 版本
javac -version

# 查看 jar 工具版本
jar --version

二、理解 Java 版本命名

2.1 版本命名规则

旧命名新命名说明
Java 1.4Java 42004年之前
Java 5.0Java 52004年
Java 6Java 62006年
Java 7Java 72011年
Java 1.8Java 82014年(最常用)
Java 9Java 92017年
Java 10Java 102018年
Java 11Java 112018年(LTS)
Java 17Java 172021年(LTS)
Java 21Java 212023年(LTS)

2.2 LTS 版本说明

LTS(Long Term Support) = 长期支持版本,推荐优先选择:

LTS 版本支持期限适用场景
Java 8已停止公开更新老项目维护
Java 11至2026年企业应用
Java 17至2029年新项目首选
Java 21至2031年最新项目

三、安装 JDK 的四种方法

方法一:官网下载安装(推荐新手)

步骤:

1. 访问官网

Oracle 官网:https://www.oracle.com/java/technologies/downloads/
OpenJDK:https://jdk.java.net/

2. 选择版本

  • 新项目:Java 17 或 21
  • 老项目:Java 8 或 11

3. 下载对应版本

芯片类型选择版本
M1/M2/M3macOS ARM64 DMG Installer
IntelmacOS x64 DMG Installer

4. 安装

# 双击下载的 .dmg 文件
# 按照安装向导完成安装

5. 验证

java -version

方法二:使用 Homebrew 安装(推荐开发者)

前提:已安装 Homebrew

# 检查 Homebrew 是否安装
brew --version

# 如未安装,先安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装步骤:

# 1. 搜索可用版本
brew search openjdk

# 2. 安装 Java 17(推荐)
brew install openjdk@17

# 3. 安装 Java 8
brew install openjdk@8

# 4. 安装 Java 21
brew install openjdk@21

# 5. 查看安装路径
brew info openjdk@17

配置环境变量:

# 根据终端提示,执行以下命令(以 Java 17 为例)
sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk \
/Library/Java/JavaVirtualMachines/openjdk-17.jdk

# 添加到 shell 配置文件
echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc
echo 'export JAVA_HOME="/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk"' >> ~/.zshrc

# 使配置生效
source ~/.zshrc

方法三:使用 SDKMAN 管理多版本(推荐高级用户)

安装 SDKMAN:

# 1. 安装 SDKMAN
curl -s "https://get.sdkman.io" | bash

# 2. 初始化 SDKMAN
source "$HOME/.sdkman/bin/sdkman-init.sh"

# 3. 验证安装
sdk version

使用 SDKMAN 管理 Java:

# 1. 查看可用版本
sdk list java

# 2. 安装 Java 17
sdk install java 17.0.8-tem

# 3. 安装 Java 8
sdk install java 8.0.382-tem

# 4. 安装 Java 21
sdk install java 21.0.0-tem

# 5. 查看已安装版本
sdk current java

# 6. 切换版本
sdk use java 17.0.8-tem

# 7. 设置默认版本
sdk default java 17.0.8-tem

# 8. 卸载版本
sdk uninstall java 8.0.382-tem

优势: 可以轻松在多个 Java 版本之间切换,非常适合需要同时开发多个项目的开发者。

方法四:使用 IntelliJ IDEA 内置 JDK

如果你使用 IntelliJ IDEA 开发:

1. 打开 IDEA → Settings → Build, Execution, Deployment → Build Tools → Maven
2. 在 "JDK for importer" 中选择或下载 JDK
3. IDEA 会自动下载并配置 JetBrains Runtime

四、配置环境变量

4.1 找到配置文件

Shell 类型配置文件
zsh(macOS 默认)~/.zshrc
bash~/.bash_profile~/.bashrc

4.2 编辑配置文件

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

4.3 添加环境变量

# ========== 单版本配置(Java 17)==========
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

# ========== 多版本切换配置 ==========
# 使用 /usr/libexec/java_home 动态获取
export JAVA_HOME=$(/usr/libexec/java_home -v 17)

# 添加别名方便切换
alias java8='export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)'
alias java11='export JAVA_HOME=$(/usr/libexec/java_home -v 11)'
alias java17='export JAVA_HOME=$(/usr/libexec/java_home -v 17)'
alias java21='export JAVA_HOME=$(/usr/libexec/java_home -v 21)'

4.4 使配置生效

# 重新加载配置文件
source ~/.zshrc

# 验证
echo $JAVA_HOME
java -version

五、多版本管理

5.1 使用 /usr/libexec/java_home 切换

# 查看所有已安装版本
/usr/libexec/java_home -V

# 临时切换到 Java 8
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

# 临时切换到 Java 17
export JAVA_HOME=$(/usr/libexec/java_home -v 17)

# 临时切换到 Java 21
export JAVA_HOME=$(/usr/libexec/java_home -v 21)

5.2 创建切换脚本

~/.zshrc 中添加:

# 创建切换函数
jdk() {
    version=$1
    export JAVA_HOME=$(/usr/libexec/java_home -v"$version")
    java -version
}

使用方法:

jdk 1.8    # 切换到 Java 8
jdk 17     # 切换到 Java 17
jdk 21     # 切换到 Java 21

5.3 项目级别配置

对于不同项目需要不同 Java 版本:

# 在项目目录下创建 .env 文件
echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 11)' > .env

# 使用 direnv 自动加载
brew install direnv
echo 'layout python' >> .envrc
direnv allow

六、验证与测试

6.1 基础验证

# 检查 Java 版本
java -version

# 检查编译器版本
javac -version

# 检查 JAVA_HOME
echo $JAVA_HOME

# 检查 Java 路径
which java
which javac

6.2 创建测试程序

# 创建测试文件
cat > Test.java << EOF
public class Test {
    public static void main(String[] args) {
        System.out.println("Java 版本: " + System.getProperty("java.version"));
        System.out.println("Java 供应商: " + System.getProperty("java.vendor"));
        System.out.println("操作系统: " + System.getProperty("os.name"));
    }
}
EOF

# 编译
javac Test.java

# 运行
java Test

预期输出:

Java 版本: 17.0.8
Java 供应商: Oracle Corporation
操作系统: Mac OS X

6.3 检查安装完整性

# 检查关键工具是否存在
ls $JAVA_HOME/bin | grep -E "java|javac|jar|javadoc"

七、常见问题解决

7.1 command not found

问题: java: command not found

解决方案:

# 1. 检查是否安装
/usr/libexec/java_home -V

# 2. 检查 PATH
echo $PATH

# 3. 重新配置 JAVA_HOME
export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=$JAVA_HOME/bin:$PATH

# 4. 永久生效
echo 'export JAVA_HOME=$(/usr/libexec/java_home)' >> ~/.zshrc
source ~/.zshrc

7.2 多版本冲突

问题: 多个 Java 版本导致冲突

解决方案:

# 1. 查看所有版本
/usr/libexec/java_home -V

# 2. 卸载不需要的版本
# Oracle JDK: 运行卸载程序
# Homebrew: brew uninstall openjdk@8

# 3. 设置默认版本
export JAVA_HOME=$(/usr/libexec/java_home -v 17)

7.3 权限问题

问题: Permission denied

解决方案:

# 修复权限
sudo chown -R $(whoami) /Library/Java/JavaVirtualMachines

# 或使用 sudo 执行
sudo java -version

7.4 M1/M2 芯片兼容问题

问题: ARM 架构兼容性问题

解决方案:

# 1. 下载 ARM64 版本(推荐)
# 2. 或使用 Rosetta 2 转译
softwareupdate --install-rosetta

# 3. 验证架构
java -version
# 应显示 "aarch64" 或 "arm64"

7.5 卸载 Java

# 1. 删除 Oracle JDK
sudo rm -rf /Library/Java/JavaVirtualMachines/jdk*.jdk

# 2. 删除偏好设置
sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane

# 3. 删除 Java 插件
sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin

# 4. Homebrew 安装的使用
brew uninstall openjdk@17

# 5. SDKMAN 安装的使用
sdk uninstall java 17.0.8-tem

快速参考表

安装命令速查

方法安装 Java 17安装 Java 8
官网下载 DMG 安装下载 DMG 安装
Homebrewbrew install openjdk@17brew install openjdk@8
SDKMANsdk install java 17.0.8-temsdk install java 8.0.382-tem

常用命令速查

命令用途
java -version查看 Java 版本
javac -version查看编译器版本
/usr/libexec/java_home -V查看所有已安装版本
echo $JAVA_HOME查看当前 JAVA_HOME
source ~/.zshrc刷新环境变量

最佳实践建议

  1. 新手推荐:使用官网 DMG 安装,简单直接
  2. 开发者推荐:使用 Homebrew + SDKMAN,方便多版本管理
  3. 生产环境:使用 LTS 版本(Java 17 或 21)
  4. 老项目维护:保留 Java 8 环境
  5. 定期更新:关注安全更新,及时升级小版本

按照以上指南操作,你应该能在 macOS 上顺利完成 Java JDK 的查看、安装和配置。

以上就是macOS查看与安装Java JDK的完整步骤的详细内容,更多关于macOS查看与安装Java JDK的资料请关注脚本之家其它相关文章!

相关文章

  • java使用CollectionUtils工具类判断集合是否为空方式

    java使用CollectionUtils工具类判断集合是否为空方式

    这篇文章主要介绍了java使用CollectionUtils工具类判断集合是否为空方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • 基于idea 的 Java中的get/set方法之优雅的写法

    基于idea 的 Java中的get/set方法之优雅的写法

    这篇文章主要介绍了基于idea 的 Java中的get/set方法之优雅的写法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • SpringBoot结合Maven项目依赖版本冲突问题解决

    SpringBoot结合Maven项目依赖版本冲突问题解决

    本文主要介绍了SpringBoot结合Maven项目依赖版本冲突问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • SpringBoot导入导出数据实现方法详解

    SpringBoot导入导出数据实现方法详解

    这篇文章主要介绍了SpringBoot导入导出数据实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-12-12
  • 一文带你掌握Java中Scanner类的使用

    一文带你掌握Java中Scanner类的使用

    Scanner类是java.util包中的一个类,常用于控制台的输入,当需要使用控制台输入时即可调用这个类。本文将通过一些简单的例子为大家介绍一下Java中Scanner类的使用,需要的可以参考一下
    2023-04-04
  • Java中的stream流分组示例详解

    Java中的stream流分组示例详解

    Java8 Stream API以函数式风格处理集合数据,支持分组、统计等操作,可按单/多字段分组,使用String、Map.Entry或Java16 record定义键,并获取数量、属性集合、极值等信息,本文给大家介绍Java中的stream流分组,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • Mybatis输入输出映射及动态SQL Review

    Mybatis输入输出映射及动态SQL Review

    这篇文章主要介绍了Mybatis输入输出映射及动态SQL Review,需要的朋友可以参考下
    2017-02-02
  • SpringBoot自动装配原理详细解析

    SpringBoot自动装配原理详细解析

    这篇文章主要介绍了SpringBoot自动装配原理详细解析,一个对象交给Spring来管理的三种方式 @Bean @Compoment @Import,
    @Bean主要在@Configuration中,通过方法进行注入相关的Bean,@Compoent与@Service归为一类,在类上加注入对应的类,需要的朋友可以参考下
    2024-01-01
  • Java微信二次开发(一) Java微信请求验证功能

    Java微信二次开发(一) Java微信请求验证功能

    这篇文章主要为大家详细介绍了Java微信二次开发第一篇,Java微信请求验证功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • SpringBoot如何动态修改Scheduled(系统启动默认执行,动态修改)

    SpringBoot如何动态修改Scheduled(系统启动默认执行,动态修改)

    这篇文章主要介绍了SpringBoot如何动态修改Scheduled(系统启动默认执行,动态修改)的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07

最新评论