当前位置: 首页 > 知识库问答 >
问题:

果戈。proto:找不到文件

鱼旺
2023-03-14

<代码>协议--gogofaster\u out=。形象协议

我收到此错误消息

/主页/abc/src/github。com/gogo/protobuf/gogoproto/gogo。proto:找不到文件。

形象proto:Import“/主页/abc/src/github.com/gogo/protobuf/gogoproto/gogo.proto”未找到或有错误。

文件肯定在那里。我可以从错误中报告的路径访问它。

我的proto文件如下所示:

package image;

import "/home/abc/src/github.com/gogo/protobuf/gogoproto/gogo.proto";

message Frame {
required bool fragment = 1; 
required int32  fragmentID = 2; 
required bool lastFragment = 3; 
required bytes data = 4;
}

我在proto文件所在的目录中有一个Makefile。如下所示:

regenerate:
--proto_path=../../github.com/gogo/protobuf/gogoproto:../../github.com/gogo/protobuf/protobuf/google/protobuf:. --gogofaster_out=. *.proto

如何解决路径错误?

共有3个答案

卢承弼
2023-03-14

您需要指定gogo。使用proto-path参数搜索导入的proto目录。

protoc --go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
path/to/your/target/protofile --proto_path=$GOPATH/src/ --proto_path=.
锺离飞尘
2023-03-14
  1. 运行go get-u github。com/gogo/protobuf将依赖项下载到本地目录
  2. 运行“go mod vendor”打包模块依赖项。执行此cmd后,您的项目中应该有一个目录“vendor”,并应在Makefile中引用

Makefile命令应为:

regenerate: 
    protoc-min-version --version="3.0.0" \
    --proto_path=$(GOPATH)/src/image \
    -I vendor/github.com/go‌​go/protobuf/protobuf‌​ \
    -I vendor/githu‌​b.com/gogo/protobuf/‌​protobuf/google/prot‌​obuf \
    -I. --gogo_out=. *.proto 

这里,--pro_path和-是相同的。
如果绝对路径包含变量,那么模式应该是:

-I=${path_variable}/a/sample \
-I=${path_variable}/b/sample \

希望这可以帮助别人!

柴茂材
2023-03-14

与本期一样,您可以尝试仅导入相对路径:

import "github.com/gogo/protobuf/gogoproto/gogo.proto";

首先确保将“GOPATH”(GOPATH)设置为“home”(主页)或“abc”(abc)。

我提到protobuf PR 241,其中makefile定义了要使用的路径:

regenerate: 
  protoc-min-version --version="3.0.0" 
    --proto_path=$(GOPATH)/src/image:
                 $(GOPATH)/src/github.com/go‌​go/protobuf/protobuf‌​:
                 $(GOPATH)/src/githu‌​b.com/gogo/protobuf/‌​protobuf/google/prot‌​obuf:
                 . --gogo_out=. *.proto 

OP提到了这条线索,指出:

这些依赖项在“google/protobuf/”中调用其他依赖项,因此这些依赖项也需要正确地位于路径中<这些错误很容易让人误解

使用gogoproto扩展时,还应使用gogofast\u out
gofast\u out仅适用于不使用任何扩展,但需要额外速度的情况
gogofast\u out/gofast\u out没有副作用
<代码>gogofaster\u out使大多数字段可为空=false。

 类似资料:
  • 我的原始文件使用默认的谷歌协议缓冲区类型,如结构和时间戳。 使用默认的gradle协议集成,gradle输出错误,因为它无法解决导入: google/protobuf/struct。proto:找不到文件。 google/protobuf/timestamp。proto:找不到文件。 替换默认的gradle协议块 其中一个指定protoc的位置 修复了该问题,但它不可移植。 是否有任何jar依赖项

  • 我一直在尝试运行以下命令 获取以下错误 github。com/x/customValidation/validators。proto:找不到文件。test\u服务器/测试。proto:5:1:Import“github.com/x/customValidation/validators.proto”未找到或有错误。 我可以看到原始文件在这个位置- 我还尝试了使用--proto\u path命令,但

  • 我正在得到。在下面的命令中找不到proto File错误 输出:以下错误是protoc失败。 Edit1:下面是test1.proto文件。这里第7行有validator.proto导入

  • 我试图对Apache Kafka 2.5设置mongo-kafka连接器。我使用的是Kafka-原型连接器。 我为这个原型建立了一个jar文件,并放在插件路径中。但我得到以下错误。 我的Pom文件: Mongo接收器配置: 我得到以下错误: 组织。阿帕奇。Kafka。连接错误。ConnectException:原型类kafka。消息在com的类路径中找不到ExchangeMessage$Order

  • 我已经在Ubuntu11.10x64上通过源代码编译安装了最新的node.js(0.8.15)。

  • 无法弄清楚为什么我得到一个文件未找到错误,当我运行一个协议命令来生成相关的go文件。 问题:在尝试从不同目录导入原型文件时,试图找出合适的原型命令是什么。我在GoLand中将原型路径设置为 结构 歌曲原型 Search.proto 创建文件: 错误: