You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Maven构建镜像时的MojoExecutionException及链接错误

解决M1 Mac上dockerfile-maven-plugin执行dockerfile:deploy时的UnsatisfiedLinkError问题

问题背景

本地环境:

  • JDK:azul-17 17.0.4
  • CPU:M1
  • 系统:12.6 (21G115)

执行mvn dockerfile:deploy时触发org.apache.maven.plugin.MojoExecutionException,核心错误为:

java.lang.UnsatisfiedLinkError: Can't load library: /var/folders/s8/13717jdj3jn4gq6n5y9jh8480000gn/T/jffi7101705819295494870.dylib

指定临时目录中不存在该dylib文件,本质是插件依赖的jffi库不兼容Apple Silicon的arm64架构。

解决方法

1. 升级dockerfile-maven-plugin版本

旧版本插件依赖的jffi库缺乏arm64支持,将插件版本升级至1.4.13(该插件最后一批维护版本),修改pom.xml中的插件配置:

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>1.4.13</version>
    <!-- 保留原有插件配置 -->
</plugin>

2. 强制指定arm64兼容的jffi版本

若升级插件后问题仍存在,在pom.xml的dependencyManagement中强制覆盖jffi依赖版本,确保使用支持arm64的版本(如1.3.9):

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.github.jnr</groupId>
            <artifactId>jffi</artifactId>
            <version>1.3.9</version>
        </dependency>
        <dependency>
            <groupId>com.github.jnr</groupId>
            <artifactId>jffi-native</artifactId>
            <version>1.3.9</version>
            <classifier>darwin-aarch64</classifier>
        </dependency>
    </dependencies>
</dependencyManagement>

3. 用Rosetta 2以x86_64架构运行Maven

通过Rosetta 2模拟x86_64环境执行构建,绕开arm64库兼容问题:

arch -x86_64 mvn dockerfile:deploy

首次执行若提示安装Rosetta 2,按指引完成安装即可。

4. 配置Docker Desktop的架构兼容

开启Docker Desktop的x86/amd64模拟支持:

  • 打开Docker Desktop偏好设置
  • 进入「Features in Development」选项卡
  • 勾选「Use Rosetta for x86/amd64 emulation on Apple Silicon」
  • 重启Docker Desktop后重新执行构建命令

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:50:32