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

文件不驻留在使用proto_path指定的任何路径中

陈业
2023-03-14

我正在测试导入。另一个目录中的proto文件。

$GOPATH/src/A/A.proto

syntax = "proto3"; 
package A;
 message SomeMsg {
     string  msg = 2;
     int64   id  = 3;
 }

$GOPATH/src/B/B.proto

syntax = "proto3"; 
package B; import "A/A.proto";
 message Msg {
     SomeMsg s = 1;
 }

我正在这样做:在文件夹A中:

protoc A.proto --go_out=.

然后在文件夹B中:

protoc B.proto --go_out=. --proto_path=$GOPATH/

但我会得到以下错误:

B. proto:文件不驻留在使用--proto_path(或-我)指定的任何路径中。您必须指定一个--proto_path包含此文件。请注意,proto_path必须是. proto文件名的确切前缀--Proto太笨了,无法弄清楚两条路径(例如绝对路径和相对路径)何时等价(这比您想象的要难)。

共有3个答案

薛涛
2023-03-14

案例1:如果所有路径都是“绝对格式”,则'...'无法在. proto文件的路径中使用。

案例2:另一个解释错误的词。相关路径和绝对路径不能在-I和. proto文件的路径中混合使用,因为“前缀”表示STRING-PREFIX,而不是“文件系统中的相关路径可以跳转到的路径”。

=========
它所在的. proto-I似乎应该同时使用相对路径,否则会出错。

袁羽
2023-03-14

protoc B.proto--go\u out=--proto\u路径=$GOPATH/src/B--progo\u路径= 为我工作。

<代码>--progo\u路径= 也可能对您有所帮助。

姚昊焱
2023-03-14

这个错误对我来说似乎很清楚,它表明您需要指定B.proto所在的确切目录

protoc B.proto --go_out=. --proto_path=$GOPATH/src/B 

或者如果您已经在文件夹B中,

protoc B.proto --go_out=.
 类似资料:
  • 我想在当前目录和所有子目录中递归编译protobuf文件。我正在运行以下脚本: 但我收到的只有以下错误: d:\Code\cloud dapi\third_party\googleapis\google\type\dayofweek.proto:文件不存在于使用proto_path(或-I)指定的任何路径中。您必须指定包含此文件的proto_path。请注意,proto_path必须是. prot

  • 问题内容: 我正在测试从另一个目录导入.proto文件。 $ GOPATH / src / A / A.proto $ GOPATH / src / B / B.proto 我正在这样做:在文件夹A中: 然后在文件夹B中: 但是我会得到这个错误: B.proto:文件不位于使用–proto_path(或-I)指定的任何路径内。您必须指定包含此文件的– proto_path。请注意,proto_pa

  • 问题内容: 我已经为“ Debian Linux”创建了一个Java应用程序。现在,我希望该应用程序读取放置在指定该应用程序的jar文件的目录中的文件。那么在File Object的参数中要指定什么呢? 在上述声明中,作为参数指定相对文件路径的参数是什么,该相对文件路径表示放置应用程序的jar文件的路径? 问题答案: 如果您知道文件的名称,那么当然 如果您不知道名称,则可以使用File对象的lis

  • 我是新的登录,我试图添加文件路径动态,与属性文件,为windows和Linux。 下面是我的代码sinppet,我如何获得${MY_HOME}的值

  • 问题内容: 如何使用类路径指定Spring项目中文件的位置? 这是我目前拥有的: 这是硬编码到我的桌面。我想要的是能够使用项目中文件的路径。 有什么建议? 问题答案: 我们在谈论标准吗?不会工作,但是没有它并不难。 maven目录的内容位于CLASSPATH的根目录中,因此您可以使用以下命令简单地检索它: 如果未找到结果(找不到资源),请随时将其包装在阅读器中: