M1芯片Mac运行Maven提示无可用编译器问题排查求助
问题根因
你当前的JAVA_HOME指向的是 macOS 内置的浏览器 Java 插件 JRE 环境,仅包含 Java 运行时,不存在编译所需的javac工具,因此触发 Maven 编译报错。/usr/libexec/java_home默认会优先匹配版本排序最高的 Java 环境,你设备上的插件 JRE 版本排序优先级高于你安装的 JDK 1.8,所以默认返回了错误路径。
解决步骤
- 第一步:确认本机已安装的全部 JDK 列表
执行如下命令查看所有已注册的 Java 环境,确认你的 JDK 1.8.0_311 存在于列表中:/usr/libexec/java_home -V - 第二步:修改
.zprofile中的JAVA_HOME配置
将原有export JAVA_HOME=$(/usr/libexec/java_home)替换为以下两种方案二选一:- 按版本指定(推荐,后续升级小版本不需要改配置):
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0_311)- 直接指定绝对路径(最稳妥,不会受其他 Java 环境安装影响):
同时可新增编码配置解决 Maven 输出的编码警告:export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_311.jdk/Contents/Homeexport JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8" - 第三步:生效配置并验证
执行命令让配置即时生效:
依次执行以下命令验证配置正确:source ~/.zprofile
若输出路径为预期的 JDK 路径、且echo $JAVA_HOME javac -versionjavac命令正常返回版本号,说明终端环境配置完成。 - 第四步:同步 Intellij IDEA 配置
- 打开
File > Project Structure,将Project页签的SDK、Modules页签对应模块的SDK均选择为你安装的 JDK 1.8 - 打开
Preferences > Build, Execution, Deployment > Build Tools > Maven > Runner,将JRE选项选择为你安装的 JDK 1.8 - 重启 Intellij 的 Terminal 标签页,重新执行
mvn clean test即可正常运行。
- 打开
额外注意事项
M1 芯片的 MacBook 需要确认你安装的 JDK 为 ARM64 架构版本,若安装的是 x86 架构的 JDK,需通过 Rosetta 2 转译运行,可能出现兼容性问题,可优先选择适配 ARM 架构的 OpenJDK 发行版。
内容的提问来源于stack exchange,提问作者Kitty Raj
相关产品推荐
相关产品推荐

