Error using import in .proto file

人走茶凉 提交于 2020-06-09 11:40:26

问题


I tried importing a proto file named test1.proto to another proto file named test2.proto using the import statement

import "com/test/test1.proto";

But i get the following error

com/test/test1.proto: File not found.
test2.proto: Import "com/test/test1.proto" was not found or had errors.

I tried in many ways to find the cause of the import error but couldn't. So could someone please tell me the correct way of doing proto file imports in case there is something wrong with the above statement??


回答1:


You have to use the --proto_path command-line flag (aka -I) to tell protoc where to look for .proto files. If you don't provide a path, by default it will only search the current directory. See the documentation (under "Generating Your Classes" at the end of the page), or type protoc --help.




回答2:


If you're using IntelliJ IDEA, go to Preferences -> Protobuf Support and add the path to your .proto file. This would resolve the error.




回答3:


Just to add, if you are building for .NET and/or you are Visual Studio, you can add an extra attribute to your proto file defination in the .csproj file to specify the Proto Root like so :

<Protobuf Include="Protos\ProtoFile.proto" GrpcServices="None" ProtoRoot="Protos\" /> 

This clears all import and related errors.




回答4:


For people running Bazel based projects, add the required proto file in the deps field of the BUILD like this-

native.proto_library(
    name = "test_message"
    srcs = "test_message.proto"
    deps = "//path/to/proto/you_are/importing:test1"

test1 is target name of the test1.proto file just like test_message is the target name of test_message.proto file.



来源:https://stackoverflow.com/questions/21134066/error-using-import-in-proto-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!