MacOS(M 芯片) Java 环境搭建指南,新手也能直接复制执行
本文详细记录了从Windows切换到M4 MacBook Air后配置Java开发环境的全过程。针对Apple Silicon芯片特性,推荐使用SDKMAN+Homebrew组合管理开发环境,解决了JDK多版本共存、Maven依赖下载慢等常见问题。主要内容包括:1)安装Homebrew包管理器;2)使用SDKMAN管理多版本JDK(8/17/21);3)配置Maven及国内镜像加速;4)实现项目级
最近换了 M4 MacBook Air,从 Windows 转到 macOS。在 AI 时代,Mac 是更好的 vibe coding 平台。这篇文档记录了我完整配置 Java 开发环境的全过程,每一条命令都直接复制可用。
前言:为什么从 Windows 换到 Mac?
这次终于下定决心从 Windows 转到 macOS M4,主要原因是:
AI 时代的 vibe coding 需求
在 AI 辅助编程时代,开发者的角色正在转变——从"敲代码的人"变成"指挥 AI 写代码的人"。这种新的开发方式(Andrej Karpathy 称之为 Vibe Coding)需要:
- 更流畅的终端体验:macOS 的 Unix 内核让 CLI 工具如鱼得水
- 更好的 AI 工具支持:Claude Code、Cursor 等 AI IDE 在 macOS 上体验更佳
- 更强的开发环境一致性:服务器和本地环境高度统一
当然,换了 M 系列芯片后,我也遇到了不少新问题:
- 为什么 JDK 8 安装不上?
- 为什么 Maven 老报 illegal instruction 错误?
- 为什么依赖下载慢到怀疑人生?
- 多个项目需要不同 JDK 版本怎么办?
- Windows 上的环境变量配置和 Mac 完全不一样?
这些问题,本质上都是 Apple Silicon 架构迁移 + 平台切换带来的双重挑战。
x86_64(Intel) 到 arm64(Apple Silicon M4),Windows 到 macOS,看似只是换个电脑,实际踩坑无数。
但好消息是,只要用对工具和姿势,这些坑都能完美避开。
今天这份指南,将带你一步步搭建一个专业、高效、多版本共存的 Java 开发环境,为 AI 辅助编程打好基础。
为什么选择 SDKMAN + Homebrew 组合?
Windows vs Mac 的环境管理差异
在 Windows 上,你可能习惯了:
- 手动下载安装包,下一步下一步安装
- 在"系统属性"里配置环境变量
- 修改 PATH 变量,重启终端生效
到了 macOS,这些方式依然可以,但不是最佳实践。macOS 有更优雅的方案:
传统方式的痛点
手动下载安装包:
- 需要自己配置 JAVA_HOME、PATH 等环境变量
- 切换版本需要改配置文件,麻烦易错
- 卸载清理不干净,容易留下残留
Homebrew 管理 JDK:
- 版本切换不够灵活
- 容易和系统自带 Java 冲突
SDKMAN 的优势
SDKMAN (SDK Manager) 是一个专门用于管理并行版本 SDK 的工具,它的核心价值在于:
- 一条命令安装/切换/卸载:无需手动配置环境变量
- 多版本和平共处:JDK 8、17、21 随时切换
- 项目级版本锁定:每个项目自动使用指定 JDK/Maven 版本
- 支持丰富:JDK、Maven、Gradle、Kotlin、Scala 等 30+ 种工具
官方推荐安装方式:Homebrew 管理系统工具 + SDKMAN 管理 JDK/Maven
这是目前 macOS 上最优雅的 Java 开发环境管理方案。
第一步:安装 Homebrew(M4 芯片必经之路)
Homebrew 是 macOS 上最流行的包管理器,相当于 macOS 版的"应用商店"。
Windows 用户类比:就像 Chocolatey 或 winget,但 Homebrew 更成熟、生态更丰富。
M 系列芯片的默认安装路径是 /opt/homebrew(Intel 芯片是 /usr/local)。
1.1 安装 Homebrew
打开终端,执行官方安装命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装过程可能需要输入密码和确认,按照提示操作即可。
1.2 配置 PATH(非常关键)
Windows 用户注意:macOS 不需要你去"系统偏好设置"里点来点去,一条命令搞定。
M 系列 Homebrew 安装后不会自动添加到 PATH,需要手动配置:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
1.3 验证安装
brew --version
能看到版本号输出,说明 Homebrew 安装成功。
第二步:安装 SDKMAN(JDK 版本管理神器)
SDKMAN 不通过 Homebrew 安装,官方推荐使用 curl 直接安装。
2.1 安装 SDKMAN
curl -s "https://get.sdkman.io" | bash
2.2 让当前终端生效
source "$HOME/.sdkman/bin/sdkman-init.sh"
2.3 验证安装
sdk version
看到版本信息输出,SDKMAN 就安装好了。
第三步:安装多版本 JDK(8/17/21 一个不少)
3.1 查看可安装的 JDK 列表
sdk list java
这个命令会列出所有可用的 JDK 版本和发行版。常见的发行版有:
| 发行版 | 特点 | 推荐场景 |
|---|---|---|
tem (Eclipse Temurin) |
企业常用、稳定、TCK 认证 | 生产环境首选 |
zulu (Azul Zulu) |
对 JDK 8 在 Apple Silicon 支持更好 | M 芯片需要 JDK 8 时 |
graalce |
GraalVM 发行版,包含 Native Image | 需要编译成可执行文件 |
3.2 安装 JDK 21(最新 LTS)
sdk install java 21.0.10-tem
3.3 安装 JDK 17(Spring Boot 3 常用)
sdk install java 17.0.18-tem
3.4 安装 JDK 8(老项目维护)
重要提醒:在 Apple Silicon 上,JDK 8 推荐使用 Zulu 发行版,因为 Temurin 的 JDK 8 对 ARM 支持有限。
sdk install java 8.0.482-zulu
3.5 设置默认 JDK 版本
如果你主要开发新项目,建议设置 JDK 21 为默认:
sdk default java 21.0.10-tem
3.6 查看当前 JDK 版本
sdk current java
java -version
两条命令都能看到当前使用的 JDK 版本。
3.7 临时切换 JDK 版本
开发老项目时,需要临时切换到 JDK 8:
sdk use java 8.0.482-zulu
注意:sdk use 只对当前终端会话生效,关闭终端后恢复默认版本。
3.8 永久切换 JDK 版本
如果要把某个版本设为新的默认:
sdk default java 17.0.18-tem
3.9 查看已安装的所有 JDK
ls -1 ~/.sdkman/candidates/java
这个目录下的每个子文件夹代表一个已安装的 JDK 版本。

第四步:安装 Maven(依赖管理神器)
4.1 查看可安装的 Maven 版本
sdk list maven
建议选择 3.9.x 稳定版,避免使用 4.0.0-rc 这样的候选版,按q退出。

4.2 安装 Maven
sdk install maven 3.9.12
sdk default maven 3.9.12
4.3 验证 Maven 安装
mvn -v
能看到 Maven 版本和 Java 版本信息,说明安装成功。
第五步:配置项目自动切换 JDK(高级玩法)
这是 SDKMAN 最强大的功能之一:进入项目目录,自动切换到该项目指定的 JDK 和 Maven 版本。
5.1 开启自动环境切换
编辑 SDKMAN 配置:
sdk config
将 sdkman_auto_env=false 改为:
sdkman_auto_env=true
保存并退出,类似vim的操作。
5.2 为项目创建 .sdkmanrc 文件
在项目根目录创建一个 .sdkmanrc 文件,内容如下:
老项目(JDK 8 + Maven 3.9.12):
cat > .sdkmanrc << 'EOF'
java=8.0.482-zulu
maven=3.9.12
EOF
Spring Boot 3 项目(JDK 17):
cat > .sdkmanrc << 'EOF'
java=17.0.18-tem
maven=3.9.12
EOF
新项目(JDK 21):
cat > .sdkmanrc << 'EOF'
java=21.0.10-tem
maven=3.9.12
EOF
5.3 验证自动切换效果
进入项目目录后,执行:
sdk env
你会看到 SDKMAN 自动切换到项目指定的版本。
从此以后,不同项目之间无缝切换,再也不用手动改配置了。
第六步:配置 Maven 国内镜像(速度暴涨 10 倍)
Maven 默认从中央仓库下载依赖,在国内访问速度很慢。配置阿里云镜像后,下载速度可以从几十 KB/s 提升到几 MB/s。
6.1 创建 settings.xml
mkdir -p ~/.m2
nano ~/.m2/settings.xml
6.2 添加阿里云镜像
将以下内容复制到 settings.xml 文件中:
<settings>
<mirrors>
<mirror>
<id>aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Aliyun Central</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
</mirrors>
</settings>
保存并退出(nano 编辑器:Ctrl+O 保存,Enter 确认,Ctrl+X 退出)。
注意:
mirrorOf=central表示只代理中央仓库,这是最稳定的配置方式。不建议设置mirrorOf=*,容易导致其他仓库的冲突。
6.3 验证镜像是否生效
mvn -X clean compile
在输出的日志中搜索 aliyun,如果看到类似这样的输出:
Using mirror aliyun (https://maven.aliyun.com/repository/central) for central
说明镜像配置成功生效。
第七步:修改 Maven 本地仓库路径(可选)
默认情况下,Maven 把依赖下载到 ~/.m2/repository 目录。如果你想自定义路径,可以按以下方式配置。
7.1 修改 settings.xml
nano ~/.m2/settings.xml
在 <settings> 标签内添加:
<localRepository>/Users/gfish/dev/maven-repository</localRepository>
完整示例(包含镜像和本地仓库):
<settings>
<localRepository>/Users/gfish/dev/maven-repository</localRepository>
<mirrors>
<mirror>
<id>aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Aliyun Central</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
</mirrors>
</settings>
记得把路径改为你自己的实际路径。
7.2 创建新目录
mkdir -p /Users/gfish/dev/maven-repository
7.3 迁移旧仓库(可选)
如果你不想重新下载依赖,可以迁移原有仓库:
mv ~/.m2/repository/* /Users/gfish/dev/maven-repository/
首次迁移建议用 cp -a 复制一份保底。
7.4 验证本地仓库配置
mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout
输出为你配置的新路径,说明配置成功。
第八步:一键检查清单(建议收藏)
完成以上配置后,可以用以下命令快速验证所有环境:
8.1 Homebrew 检查
brew --version
8.2 SDKMAN 检查
sdk version
8.3 当前 JDK/Maven 版本
sdk current java
sdk current maven
java -version
mvn -v
8.4 已安装的 JDK/Maven 列表
ls -1 ~/.sdkman/candidates/java
ls -1 ~/.sdkman/candidates/maven
8.5 Maven 镜像验证(关键)
mvn -X clean compile | grep aliyun
8.6 本地仓库路径验证
mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout
全部通过,你的 Java 开发环境就完美配置好了!
常见问题排查
问题 1:JDK 8 安装失败
现象:sdk install java 8.x.x-tem 报错
原因:Temurin JDK 8 对 Apple Silicon 支持有限
解决方案:使用 Zulu 发行版
sdk install java 8.0.482-zulu
问题 2:Maven 报 illegal instruction
现象:执行 mvn 命令报 illegal instruction 错误
原因:使用的是老版本 Maven(3.3.9),不支持 Apple Silicon
解决方案:升级到 Maven 3.8.6+
sdk install maven 3.9.12
问题 3:Maven 依赖下载仍然很慢
检查清单:
- 确认
settings.xml中的镜像 URL 是https://maven.aliyun.com/repository/central - 确认
mirrorOf设置为central,不是* - 使用
mvn -X查看日志,确认使用了 aliyun 镜像
问题 4:多个项目切换 JDK 麻烦
解决方案:为每个项目创建 .sdkmanrc 文件,并开启 sdkman_auto_env=true
标准环境结构一览
完成所有配置后,你的开发环境应该是这样的:
~/
├── .sdkman/
│ └── candidates/
│ ├── java/
│ │ ├── 8.0.482-zulu
│ │ ├── 17.0.18-tem
│ │ ├── 21.0.10-tem
│ │ └── current -> 21.0.10-tem
│ └── maven/
│ ├── 3.9.12
│ └── current -> 3.9.12
├── .m2/
│ ├── settings.xml
│ └── repository/ (或自定义路径)
└── .zprofile (包含 brew shellenv)
项目目录:
~/projects/my-spring-boot-app/
├── .sdkmanrc (指定项目使用的 JDK 版本)
├── pom.xml
└── src/
Vibe Coding 时代:为什么 Mac 更适合 AI 辅助开发?
配置完开发环境后,你可能会问:为什么费这么大劲从 Windows 转到 Mac?
在 AI 时代,Mac + macOS 对于 vibe coding 有几个天然优势:
1. Unix-first 的终端体验
macOS 的内核是 Darwin(基于 BSD),这意味着:
- 所有 Linux 服务器的命令都能直接用
- SSH、grep、awk、sed 等工具开箱即用
- 不需要像 Windows 那样装 Git Bash 或 WSL
对于 vibe coding 的意义:当你用 Claude Code 这样的 AI CLI 工具时,它能直接操作你的系统,而不是在虚拟层里绕来绕去。
2. 更好的 AI 工具生态
目前主流的 AI 编程工具:
- Claude Code:官方 CLI,macOS 原生支持最佳
- Cursor:基于 VS Code,macOS 性能更好
- GitHub Copilot:跨平台,但在 Unix 环境下更流畅
3. 环境一致性
开发环境 → 测试环境 → 生产环境,全都是 Unix/Linux。
Windows 用户痛点:本地 Windows,开发 WSL,测试 Linux,生产 Linux——每一层都有细微差异。
Mac 用户优势:本地 macOS = 远程 Linux,环境高度一致。
4. 终端多路复用神器
macOS + iTerm2 + tmux,可以:
- 一个终端窗口,分屏连接多个服务器
- 断网不丢会话
- 远程开发像本地一样流畅
这对于 AI 辅助远程开发 是巨大的优势。
总结:花 30 分钟,节省未来无数小时
配置开发环境是件"一劳永逸"的事情。虽然花了 30 分钟,但未来你将获得:
- 多版本 JDK 随时切换:老项目、新项目无缝切换
- 项目级环境隔离:每个项目自动使用正确的 JDK 版本
- 依赖下载速度提升:从几十 KB/s 到几 MB/s
- 环境可复制:换电脑、入职新公司,快速复刻环境
这就是专业的开发体验。
更重要的是:你在 macOS 上搭建好了基础环境,接下来就可以体验真正的 vibe coding 了——用 Claude Code 这样的 AI 工具,让它帮你写代码、debug、重构,而你只需要负责"描述需求"和"做决策"。
推荐阅读
准备开始 Vibe Coding?
Claude Code 官方文档:
https://docs.anthropic.com/claude-code
使用 Claude Code 进行 Vibe Coding 最佳实践:
https://m.blog.csdn.net/jjhfen00/article/details/158045319
Java 环境相关资源
Eclipse Temurin 官网:
https://adoptium.net/temurin/releases/
Azul Zulu 官网:
https://www.azul.com/downloads/?package=jdk
SDKMAN 官网:
https://sdkman.io/
阿里云 Maven 公共仓库:
https://maven.aliyun.com/mvn/view
作者简介:一名从 Windows 转到 macOS M4 的 Java 开发者,正在探索 AI 时代的 vibe coding 新范式。
版权声明:本文原创,转载请注明出处。
互动话题:你从 Windows 转到 Mac 后遇到过哪些坑?欢迎在评论区分享!
欢迎关注公众号 FishTech Notes,一起交流使用心得!
更多推荐

所有评论(0)