You need to enable JavaScript to run this app. M1 Mac设备使用Quarkus构建原生镜像失败问题求助
优惠活动
大模型
产品
解决方案
定价
更多

M1 Mac设备使用Quarkus构建原生镜像失败问题求助

问题根因说明

  1. 最初容器构建卡住是因为拉取的quay.io/quarkus/ubi-quarkus-native-image:21.0-java11仅支持amd64架构,在M1(arm64)设备上靠QEMU转译运行效率极低,直接导致构建卡死。
  2. 本地构建后运行出现killed报错核心原因有三个:
    • 你使用的Quarkus 1.13.7.Final版本过老,未适配Apple Silicon(M1)架构的原生镜像构建
    • 安装的GraalVM 20.3.x版本对M1架构的兼容性存在缺陷
    • 构建命令错误携带了-Dnative-image.docker-build=true参数,本地非容器构建不需要该配置

解决方案

步骤1:升级Quarkus版本

将项目pom.xml中的Quarkus版本升级至2.0.0.Final以上,优先选择2.16.x LTS版本,该版本已完成M1架构原生构建的适配。

步骤2:更换适配M1的GraalVM版本

卸载原有GraalVM 20.3.x,重新安装适配arm64架构的GraalVM 17或21版本:

brew install --cask graalvm/tap/graalvm-ce-java17

后续JEnv配置、GRAALVM_HOME环境变量同步更新为新的GraalVM路径。

步骤3:移除未使用的依赖

根据构建日志的警告提示,你未配置JDBC数据源却引入了agroal、hibernate-orm等相关依赖,先从pom.xml中移除所有未使用的依赖项,避免多余逻辑导致原生镜像构建异常。

步骤4:执行正确的构建命令

本地非容器构建原生镜像时,移除docker-build相关参数,执行如下命令:

mvn clean package -Pnative -Dquarkus.native.native-image-xmx=6g

分配6G内存给native-image构建进程,避免内存不足导致构建或运行异常。

步骤5:异常排查

如果运行时仍出现killed报错,可打开Mac控制台的崩溃报告查看具体崩溃原因,若为GraalVM原生镜像不支持的反射、动态代理等逻辑,需要在项目中补充对应的Quarkus原生镜像元数据配置。


内容的提问来源于stack exchange,提问作者Viswanath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 18:54:04