M1Pro Mac执行protoc生成gRPC文件报错:插件状态码1
解决M1 Pro Mac上protoc-gen-grpc-java插件执行失败的问题
问题分析
你遇到的核心问题是下载的gRPC Java插件带有.exe后缀——这是Windows平台的可执行文件标识,M1 Mac(arm64架构)的系统无法正确识别带有该后缀的文件为可执行程序,哪怕你已经设置了完整权限也无济于事。
解决方案
1. 移除插件文件的.exe后缀
首先重命名你的插件文件,去掉多余的.exe后缀:
mv /Users/MYUSERNAME/Downloads/protoc-gen-grpc-java-1.48.1-osx-aarch_64.exe /Users/MYUSERNAME/Downloads/protoc-gen-grpc-java-1.48.1-osx-aarch_64
2. 修改protoc命令的plugin参数
更新你的生成命令,将--plugin指向重命名后的文件:
protoc --proto_path=$PROTO_PATH --plugin=protoc-gen-grpc=/Users/MYUSERNAME/Downloads/protoc-gen-grpc-java-1.48.1-osx-aarch_64 --grpc_out=$OUT/grpc $PROTO_FILES
3. (可选)将插件加入系统PATH简化命令
为了避免每次都指定完整路径,你可以将插件复制到系统PATH包含的目录(比如/usr/local/bin),并确保权限正确:
# 复制并重命名为protoc-gen-grpc(protoc默认会查找这个命名的插件) cp /Users/MYUSERNAME/Downloads/protoc-gen-grpc-java-1.48.1-osx-aarch_64 /usr/local/bin/protoc-gen-grpc # 确保执行权限 chmod +x /usr/local/bin/protoc-gen-grpc
之后你可以直接使用简化命令:
protoc --proto_path=$PROTO_PATH --grpc_out=$OUT/grpc $PROTO_FILES
4. 验证插件架构匹配(可选)
如果问题仍存在,用file命令验证插件是否适配M1的arm64架构:
file /Users/MYUSERNAME/Downloads/protoc-gen-grpc-java-1.48.1-osx-aarch_64
正常输出应该包含Mach-O 64-bit executable arm64,如果显示x86_64,说明你下载了错误的架构版本,需要重新下载对应osx-aarch_64的插件。
内容的提问来源于stack exchange,提问作者juuubbb
相关产品推荐
相关产品推荐

