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

protoc编译proto文件报错:google/api/annotations.proto导入失败

解决protoc编译时找不到google/protobuf/descriptor.proto和google/api/annotations.proto的问题

问题原因

你遇到的错误根源在于:

  • google/api/annotations.proto 依赖 google/protobuf/descriptor.proto,但这两个官方proto文件都不在protoc默认搜索路径内,而你当前的编译命令仅指定了自己的proto/目录作为搜索路径。
  • 移除google/api/annotations.proto的导入后编译正常,说明你的自定义proto文件本身无问题,故障完全出在第三方proto文件的路径配置上。

解决方案

1. 获取匹配版本的官方proto文件

需要将google/api/annotations.proto及其依赖的google/protobuf/descriptor.proto等文件添加到protoc可搜索的位置:

  • 找到与你的protoc 3.0.0版本兼容的官方proto文件(版本不匹配可能引发新的语法错误),将完整的google目录(包含api、protobuf子目录)复制到项目的proto/目录下。最终目录结构应类似:
    项目根目录
    ├── proto/
    │   ├── google/
    │   │   ├── api/
    │   │   │   └── annotations.proto
    │   │   └── protobuf/
    │   │       └── descriptor.proto
    │   └── currency.proto
    └── pb/
    

2. 调整编译命令(按需)

如果已将google目录放到proto/下,原编译命令可直接使用——因为-I proto/已让protoc能搜索到proto/google/下的文件。若官方proto文件放在其他目录(比如third_party/googleapis),则需在命令中添加该目录作为额外搜索路径:

protoc -I proto/ -I third_party/googleapis proto/*.proto --go_out=plugins=grpc:pb

3. 验证导入语句正确性

确保currency.proto中的导入语句为:

import "google/api/annotations.proto";

这样protoc就能通过指定的搜索路径找到该文件,同时annotations.proto中对descriptor.proto的导入也能被正确解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:10:19