我尝试使用import语句将名为test1.proto的proto文件导入另一个名为test2.proto的proto文件
import "com/test/test1.proto";
但我收到以下错误
com/test/test1.proto: File not found.
test2.proto: Import "com/test/test1.proto" was not found or had errors.
我尝试过很多方法来查找导入错误的原因但不能。那么有人可以告诉我正确的方法进行原型文件导入,以防上述声明出现问题吗?
答案 0 :(得分:30)
您必须使用--proto_path
命令行标志(又名-I
)告诉protoc
在哪里查找.proto
个文件。如果您不提供路径,则默认情况下它只会搜索当前目录。请参阅the documentation(在页面末尾的“生成您的类”下),或键入protoc --help
。
答案 1 :(得分:11)
如果要为.NET和/或Visual Studio进行构建,则只需添加即可,即可在.csproj文件中的原型文件定义中添加额外的属性,以指定原型根目录,如下所示:
<Protobuf Include="Protos\ProtoFile.proto" GrpcServices="None" ProtoRoot="Protos\" />
这将清除所有导入和相关错误。
答案 2 :(得分:10)
如果您正在使用IntelliJ IDEA,请转到偏好设置 - &gt; Protobuf支持并添加.proto
文件的路径。这样可以解决错误。
答案 3 :(得分:0)
Aarish Ramesh
最好的工作是将所有.proto文件放入同一文件夹,然后您无需注入完整路径,仅proto文件的名称就足够了。
import "your_fle.proto"
答案 4 :(得分:-1)
对于运行基于Bazel的项目的人,像这样的那样,在proto
的{{1}}字段中添加所需的deps
文件-
BUILD
native.proto_library(
name = "test_message"
srcs = "test_message.proto"
deps = "//path/to/proto/you_are/importing:test1"
是test1
文件的目标名称,就像test1.proto
是test_message
文件的目标名称一样。