proto:文件已经注册到不同的包

我在不同的 go 包下编译了 2 个 proto,但是当我在 aa 服务器中注册它们并运行它时,我得到:

panic: proto: file "common.proto" is already registered
    previously from: "github.com/soft/test-platform.go/common"
    currently from:  "github.com/soft/proto-asterix/asterix"

这是测试平台存储库(/api文件夹中)中的common.proto :

syntax = "proto3";
package soft.testplatform.common; // here I do defint a UNIQUE package name !

option java_multiple_files = true;
option go_package = "github.com/soft/test-platform.go/common"; // Here I do define a unique go package name !

message MyMessage{
    string commandId = 1;
}

如您所见,go_packagepackage的包定义不会与来自 github.com/soft/proto-asterix/asterix 的包发生冲突。只有 .proto 文件名相似(common.proto)。

我使用以下命令生成带有 protoc 和 protoc-gen-go 插件的 go 文件:

protoc 
--proto_path=../test-platform/api/   
--go_out=./common --go_opt=paths=source_relative 
../test-platform/api/common.proto

根据此处的文档https://developers.google.com/protocol-buffers/docs/reference/go/faq#fix-namespace-conflict应附加包和文件名以检查注册冲突,但似乎没有就是这种情况。

有没有人遇到过这种行为?我是否错过了解决此包名称冲突的明显问题?


这是我尝试过的:

  • 向文件添加/删除package指令common.proto
  • 更改 protoc 命令以使用绝对(而不是相对) proto_path

Protoc 版本:libprotoc 3.15.7 Protoc go 插件版本:protoc-gen-go v1.26.0

以上是proto:文件已经注册到不同的包的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>