MacBook 标准 JDK 安装与多版本切换
文档定位:本文不是通用转载教程,而是作为当前 MacBook 的 Java 开发环境标准安装文档使用。
适用设备:当前 MacBook(Apple Silicon / arm64)。
默认 Shell:zsh。
标准主力版本:JDK 17。
适用技术栈:Java 17、Spring Boot 3、Maven、PostgreSQL、Vue + Vite 前后端分离项目。
1. 最终目标#
当前 MacBook 的 Java 环境按以下标准配置:
- 默认使用 JDK 17,作为 Spring Boot 3 和 Java 后端开发主力版本;
- 如需兼容历史项目,可额外安装 JDK 8、JDK 11;
- 不建议将 JDK 22、JDK 23、JDK 24 等非 LTS 版本作为日常主力版本;
- 当前 MacBook 为 Apple Silicon 架构,应下载 macOS ARM64 / aarch64 版本 JDK;
- 环境变量统一写入
~/.zshrc; - JDK 切换使用函数方式,不使用简单 alias;
- 不配置全局
CLASS_PATH; - Maven 不单独绑定固定 JDK,统一跟随当前
JAVA_HOME。
2. 当前 MacBook 环境确认#
打开终端,执行以下命令:
bashuname -m
当前 MacBook 应返回:
basharm64
说明当前设备为 Apple Silicon 架构,后续下载 JDK 时应选择:
textmacOS ARM64 / aarch64
继续确认当前 Shell:
bashecho $SHELL
正常应返回:
bash/bin/zsh
因此本机标准配置文件为:
bash~/.zshrc
3. JDK 版本选择标准#
3.1 标准安装版本#
当前 MacBook 建议安装以下版本:
| JDK 版本 | 是否安装 | 用途 |
|---|---|---|
| JDK 8 | 可选 | 老项目、旧版 Spring、旧 Maven 项目兼容 |
| JDK 11 | 可选 | 企业历史项目、过渡期项目兼容 |
| JDK 17 | 必装 | 当前主力开发版本,适用于 Spring Boot 3 |
| JDK 21 | 可选 | 新一代 LTS,作为后续升级储备 |
3.2 本机默认版本#
当前 MacBook 默认 Java 版本统一设置为:
textJDK 17
原因:
- Spring Boot 3 要求 Java 17 及以上;
- Java 17 是长期支持版本,稳定性和生态兼容性更好;
- 企业后端项目、个人知识库平台、官网后台服务均可统一使用 Java 17;
- 可以减少多版本混用导致的 Maven、IDE、构建脚本问题。
4. 下载 JDK#
4.1 推荐下载来源#
当前 MacBook 推荐优先使用以下 OpenJDK 发行版之一:
- Eclipse Temurin JDK;
- Azul Zulu JDK;
- Microsoft Build of OpenJDK;
- Amazon Corretto JDK。
如项目或单位明确要求 Oracle JDK,也可以安装 Oracle JDK。
4.2 下载文件选择#
当前 MacBook 是 Apple Silicon,因此下载时必须选择:
textmacOS ARM64 DMG Installer
或:
textmacOS aarch64 DMG Installer
不要选择:
textmacOS x64 DMG Installer
除非设备是 Intel Mac。
5. 安装 JDK#
5.1 使用 DMG 安装包安装#
下载 .dmg 文件后,按以下步骤安装:
- 打开
Finder; - 进入
Downloads; - 双击 JDK 的
.dmg安装包; - 双击里面的
.pkg安装程序; - 按提示点击“继续”;
- 输入当前 MacBook 登录密码;
- 等待安装完成。
5.2 检查 JDK 安装目录#
安装完成后,在终端执行:
bashcd /Library/Java/JavaVirtualMachines ls
可能看到类似内容:
bashjdk-17.jdk jdk-11.jdk jdk-1.8.jdk
也可能是不同发行版名称,例如:
bashtemurin-17.jdk zulu-17.jdk microsoft-17.jdk amazon-corretto-17.jdk
实际目录名称以本机 ls 输出为准。
6. 查看本机 JDK 真实路径#
macOS 推荐使用 /usr/libexec/java_home 管理 JDK 路径。
查看所有已安装 JDK:
bash/usr/libexec/java_home -V
示例输出:
textMatching Java Virtual Machines (3): 17.0.x (arm64) "Eclipse Adoptium" - "OpenJDK 17" /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home 11.0.x (arm64) "Eclipse Adoptium" - "OpenJDK 11" /Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home 1.8.0_xxx (arm64) "Eclipse Adoptium" - "OpenJDK 8" /Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home
查看 JDK 17 路径:
bash/usr/libexec/java_home -v 17
查看 JDK 11 路径:
bash/usr/libexec/java_home -v 11
查看 JDK 8 路径:
bash/usr/libexec/java_home -v 1.8
7. 配置环境变量#
7.1 打开 zsh 配置文件#
执行:
bashvi ~/.zshrc
如果不熟悉 vi,也可以用 VS Code 打开:
bashcode ~/.zshrc
如果 code 命令不可用,则使用:
bashopen -e ~/.zshrc
8. 当前 MacBook 标准 JDK 配置#
将以下内容添加到 ~/.zshrc 文件末尾。
bash# ========================================================== # Java / JDK Standard Config for Current MacBook # Default JDK: 17 # Shell: zsh # Architecture: Apple Silicon arm64 # ========================================================== # Maven 可选配置:如本机已经单独安装 Maven,可取消注释并改成实际路径 # export MAVEN_HOME="$HOME/dev/apache-maven-3.9.6" # export PATH="$MAVEN_HOME/bin:$PATH" # 默认使用 JDK 17 # JDK 切换函数:比 alias 更稳定 function use_jdk() { local version="$1" if [ -z "$version" ]; then echo "Usage: use_jdk <version>" echo "Example: use_jdk 17" return 1 fi local new_java_home new_java_home="$(/usr/libexec/java_home -v "$version" 2>/dev/null)" if [ -z "$new_java_home" ]; then echo "JDK $version is not installed on this MacBook." echo "Installed JDKs:" /usr/libexec/java_home -V return 1 fi export JAVA_HOME="$new_java_home" # 清理 PATH 中已有的 JavaVirtualMachines JDK bin 路径,避免 java 命令仍指向旧版本 export PATH="$(echo "$PATH" | tr ':' '\n' | grep -v '/Library/Java/JavaVirtualMachines/.*/Contents/Home/bin' | paste -sd ':' -)" export PATH="$JAVA_HOME/bin:$PATH" echo "Current JDK switched to: $version" echo "JAVA_HOME=$JAVA_HOME" java -version } # 常用快捷命令 function jdk8() { use_jdk 1.8; } function jdk11() { use_jdk 11; } function jdk17() { use_jdk 17; } function jdk21() { use_jdk 21; } # 查看当前 Java 环境 function javainfo() { echo "JAVA_HOME=$JAVA_HOME" echo "java path=$(which java)" java -version echo "" echo "Installed JDKs:" /usr/libexec/java_home -V }
9. 让配置立即生效#
保存 ~/.zshrc 后执行:
bashsource ~/.zshrc
验证当前 Java 版本:
bashjava -version
验证 JAVA_HOME:
bashecho $JAVA_HOME
查看完整 Java 环境:
bashjavainfo
10. JDK 版本切换方法#
10.1 切换到 JDK 17#
bashjdk17
或:
bashuse_jdk 17
10.2 切换到 JDK 11#
bashjdk11
或:
bashuse_jdk 11
10.3 切换到 JDK 8#
bashjdk8
或:
bashuse_jdk 1.8
10.4 切换到 JDK 21#
bashjdk21
或:
bashuse_jdk 21
11. Maven 配置标准#
11.1 Maven 与 JDK 的关系#
Maven 本身不应该绑定死某个 JDK。Maven 启动时会读取当前终端中的 JAVA_HOME。
因此切换 JDK 后,必须用以下命令检查 Maven 实际使用的 Java 版本:
bashmvn -v
示例输出中应关注:
textJava version: 17.x.x Java home: /Library/Java/JavaVirtualMachines/xxx-17.jdk/Contents/Home
11.2 如果 Maven 使用了错误的 JDK#
先执行:
bashjdk17
再执行:
bashmvn -v
如果仍然不对,检查:
bashwhich mvn which java echo $JAVA_HOME echo $PATH
常见原因是 ~/.zshrc、~/.bash_profile、IDE 配置、Maven Wrapper 或项目脚本中重复写死了旧 JDK 路径。
12. IntelliJ IDEA 配置标准#
如果使用 IntelliJ IDEA,建议按以下标准配置。
12.1 Project SDK#
进入:
textFile -> Project Structure -> Project -> SDK
选择:
textJDK 17
12.2 Gradle 或 Maven JVM#
进入:
textSettings -> Build, Execution, Deployment -> Build Tools
对于 Maven 项目,确认 Maven Runner 使用 JDK 17。
对于 Gradle 项目,确认 Gradle JVM 使用 JDK 17。
12.3 Spring Boot 3 项目#
Spring Boot 3 项目建议统一:
textProject SDK: JDK 17 Language Level: 17 Maven Runner JRE: JDK 17
13. 当前 MacBook 标准验证清单#
配置完成后,依次执行以下命令:
bashuname -m echo $SHELL /usr/libexec/java_home -V echo $JAVA_HOME which java java -version javac -version mvn -v
期望结果:
uname -m返回arm64;echo $SHELL返回/bin/zsh;/usr/libexec/java_home -V能看到 JDK 17;echo $JAVA_HOME指向 JDK 17 的Contents/Home;which java优先指向$JAVA_HOME/bin/java;java -version显示 Java 17;javac -version显示 Java 17;mvn -v中的 Java version 显示 Java 17。
14. 常见问题处理#
14.1 输入 jdk17 提示 command not found#
原因:~/.zshrc 没有生效。
解决:
bashsource ~/.zshrc
再执行:
bashjdk17
如果仍然失败,检查配置是否写入了正确文件:
bashecho $SHELL
如果返回 /bin/zsh,就必须配置 ~/.zshrc。
14.2 java -version 不是 JDK 17#
先执行:
bashjdk17
再检查:
bashwhich java java -version echo $JAVA_HOME
如果 which java 没有指向 JDK 17,说明 PATH 中存在其他 Java 路径,需要检查 ~/.zshrc 中是否有重复 Java 配置。
14.3 /usr/libexec/java_home -v 17 找不到 JDK#
说明本机没有正确安装 JDK 17,或者安装的是异常目录。
检查:
bashls /Library/Java/JavaVirtualMachines
如果没有 JDK 17,需要重新下载并安装 ARM64 版本 JDK 17。
14.4 Maven 仍然使用旧 JDK#
执行:
bashjdk17 mvn -v
如果 Maven 仍显示旧版本,检查是否存在以下情况:
~/.zshrc中重复设置了JAVA_HOME;~/.bash_profile中也设置了旧 JDK;- IDE 中 Maven Runner 写死了旧 JDK;
- 项目中使用了 Maven Wrapper,并在脚本中写死了 Java 路径;
- 终端没有重新加载配置。
14.5 是否需要配置 CLASS_PATH#
不需要。
当前 MacBook 标准环境不配置全局 CLASS_PATH。Java 项目的依赖应交给 Maven、Gradle 或 IDE 管理。
15. 推荐目录规范#
当前 MacBook 建议采用以下开发目录结构:
text~/dev ├── java ├── maven ├── projects ├── scripts └── tools
如手动安装 Maven,可放在:
text~/dev/maven/apache-maven-3.9.6
对应配置为:
16. 一键检查脚本#
可在终端执行以下命令,快速检查当前 Java 和 Maven 环境:
bashcat <<'EOF' > ~/dev/scripts/check-java-env.sh #!/usr/bin/env bash set -e echo "===== Mac Architecture =====" uname -m echo "" echo "===== Shell =====" echo "$SHELL" echo "" echo "===== Installed JDKs =====" /usr/libexec/java_home -V || true echo "" echo "===== JAVA_HOME =====" echo "$JAVA_HOME" echo "" echo "===== Java Path =====" which java || true echo "" echo "===== Java Version =====" java -version || true echo "" echo "===== Javac Version =====" javac -version || true echo "" echo "===== Maven Version =====" mvn -v || true INNER_EOF chmod +x ~/dev/scripts/check-java-env.sh ~/dev/scripts/check-java-env.sh
如果提示目录不存在,先执行:
bashmkdir -p ~/dev/scripts