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

M1 Mac+OpenJDK11环境下Proto代码生成失败问题求助

解决方案:M1 Mac下使用protoc 3.3.0生成代码的兼容问题

问题根源

protoc 3.3.0版本未提供**osx-aarch_64(M1/M2等ARM架构)**的预编译二进制包,而Intel Mac会自动匹配osx-x86_64的包,因此同事使用相同配置无问题。

可行解决方案

1. 强制指定x86_64架构的protoc包

在项目的pom.xml中,直接覆盖架构属性,让Maven下载x86_64版本的protoc,通过Rosetta转译运行:

<properties>
    <os.detected.classifier>osx-x86_64</os.detected.classifier>
</properties>

或者直接修改插件的protocArtifact配置,硬编码架构:

<protocArtifact>
    com.google.protobuf:protoc:3.3.0:exe:osx-x86_64
</protocArtifact>

2. 本地安装protoc 3.3.0并指定可执行文件

  • 手动下载protoc 3.3.0的osx-x86_64预编译包,解压后将protoc可执行文件放到本地路径(比如/usr/local/bin/protoc)
  • 修改Maven插件配置,替换protocArtifact为本地执行文件路径:
<configuration>
    <!-- 移除原有的protocArtifact配置 -->
    <protocExecutable>/usr/local/bin/protoc</protocExecutable>
    <pluginId>grpc-java</pluginId>
    <pluginArtifact>
        io.grpc:protoc-gen-grpc-java:1.4.0:exe:${os.detected.classifier}
    </pluginArtifact>
    <clearOutputDirectory>false</clearOutputDirectory>
</configuration>

注:protoc-gen-grpc-java 1.4.0同样没有osx-aarch_64包,因此也可以用同样方法指定本地x86_64版本,或者同样强制classifier为osx-x86_64。

3. 通过Rosetta运行Maven

  • 找到终端应用,右键选择「显示简介」,勾选「使用Rosetta打开」
  • 在这个终端窗口中执行Maven编译命令(如mvn clean compile),此时Maven会以x86_64架构运行,自动匹配osx-x86_64的包,无需修改配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:37:49