【发布时间】:2014-07-25 06:57:29
【问题描述】:
我在单个目录中有两个 proto 文件,我正在寻找一种在单个命令中从这些文件生成类的方法。这似乎可以通过--proto_path 参数来完成。根据文档:
您必须提供一个或多个 .proto 文件作为输入。可以一次指定多个 .proto 文件。尽管文件是相对于当前目录命名的,但每个文件都必须位于 [由 --proto_path 参数指定的] IMPORT_PATH 之一中,以便编译器可以确定其规范名称。
C:\shekhar\proto_trial>dir
Volume in drive C is C
Directory of C:\shekhar\proto_trial
07/25/2014 12:16 PM <DIR> .
07/25/2014 12:16 PM <DIR> ..
07/25/2014 12:16 PM <DIR> java_op
07/25/2014 12:16 PM 230 map.proto
07/23/2014 04:24 PM 161 message.proto
07/25/2014 12:17 PM 1,228 response.proto
3 File(s) 1,619 bytes
3 Dir(s) 50,259,398,656 bytes free
我使用--proto_path 参数如下所示
C:\shekhar\proto_trial>protoc
--proto_path=C:\shekhar\proto_trial
--java_out=C:\shekhar\proto_trial\java_op
*.proto
但我收到以下错误
message.proto: File does not reside within any path specified using --proto_path (or -I).
You must specify a --proto_path which encompasses this file.
Note that the proto_path must be an exact prefix of the .proto file names -- protoc is unable to figure out when two paths (e.g. absolute and relative) are equivalent (it's harder than you think).
请提出一些方法来一次性编译所有的 proto 文件。
【问题讨论】:
-
请参阅developers.google.com/protocol-buffers/docs/proto#generating,了解
--proto_path的用途。指示 protoc 编译哪些文件的标志实际上只是 @filename 参数。--proto_path用于解决导入问题。
标签: java protocol-buffers