1

我正在尝试使用正方形的Wire生成文件。我可以很好地运行他们的示例,但是一旦我添加 import "google/protobuf/timestamp.proto";到他们的 .proto 文件以检查线如何处理时间戳,编译器就会出现以下异常:

Exception in thread "main" java.io.FileNotFoundException: Failed to locate google/protobuf/timestamp.proto in [src/main/proto]

我的路径中有 protoc($PATH=...usr/local/bin,protoc位于其中。timestamp.proto位于 下方/usr/local/include/google/protobuf)。我希望线编译器使用我系统中的 protoc,因此能够使用它的包含。

尝试使用 gradle 插件运行线并使用预编译的 jar 来获得相同的结果。

更新: 还尝试在 android studio 项目中使用 gradle 插件到相同的程度。

* What went wrong:
Execution failed for task ':app:generateProtos'.
> unable to resolve 1 imports:
    google/protobuf/timestamp.proto
  searching 0 proto paths:
4

2 回答 2

1

Wire 现在支持 Proto3 和新类型,包括Timestamp. 您可以在此处检查实现的差异:https ://square.github.io/wire/wire_vs_protoc/

于 2020-12-09T21:21:44.803 回答
1

好的,经过一番搜索和实验,结果是:

1) Wire不支持 proto3 语法(还)

2) Timestamp 是用 proto3 语法编写的,所以wire 也不支持它。

所以答案是 - 在实现 proto3 支持之前,您不能导入 timestamp.proto 并使用它来生成带有线的类。

于 2020-02-16T16:57:52.583 回答