【发布时间】:2018-04-20 21:41:18
【问题描述】:
查看 google-fhir 的自述文件,它说运行 bazel build,它可以工作,但是没有任何协议文件被编译。
运行protoc --proto_path=. --java_out=. proto/stu3/resources.proto 返回一堆关于未找到其他原型的错误。这会倒退到“descriptor.proto”,它不是文件夹中的原型。该目录中的所有协议文件都不会手动编译成 java 文件。
*另一方面,我能够从其他来源获取其他示例原型并成功编译。
更新
从 google-fhir 基本目录运行命令 protoc --proto_path=proto/stu3/ --java_out=target proto/stu3/resources.proto 会返回以下输出:
~/fhir-master$ protoc --proto_path=proto/stu3/ --java_out=target proto/stu3/resources.proto
proto/stu3/annotations.proto: File not found.
proto/stu3/codes.proto: File not found.
proto/stu3/datatypes.proto: File not found.
resources.proto: Import "proto/stu3/annotations.proto" was not found or had errors.
resources.proto: Import "proto/stu3/codes.proto" was not found or had errors.
resources.proto: Import "proto/stu3/datatypes.proto" was not found or had errors.
resources.proto:84:5: "String" is not defined.
resources.proto:87:14: "Extension" is not defined.
resources.proto:90:14: "Extension" is not defined.
resources.proto:94:5: "Reference" is not defined.
resources.proto:97:5: "PositiveInt" is not defined.
...
...
这些文件肯定位于同一个 proto 目录中。
更新 2
嗯,这绝对不是开箱即用的。移动文件,我能够生成包含一堆 Java 文件的目标文件夹。但是,尝试编译它们时,我得到了不存在的文件的错误:
symbol: class CodeableConcept
location: package com.google.fhir.stu3.proto
./PlanDefinition.java:30950: error: cannot find symbol
public com.google.fhir.stu3.proto.CodeableConceptOrBuilder getJurisdictionOrBuilder(
^
symbol: class CodeableConceptOrBuilder
location: package com.google.fhir.stu3.proto
./PlanDefinition.java:30956: error: cannot find symbol
private java.util.List<com.google.fhir.stu3.proto.CodeableConcept> topic_;
^
symbol: class CodeableConcept
location: package com.google.fhir.stu3.proto
./PlanDefinition.java:30964: error: cannot find symbol
public java.util.List<com.google.fhir.stu3.proto.CodeableConcept> getTopicList() {
^
symbol: class CodeableConcept
location: package com.google.fhir.stu3.proto
./PlanDefinition.java:30974: error: cannot find symbol
public java.util.List<? extends com.google.fhir.stu3.proto.CodeableConceptOrBuilder>
.... ^
100 errors.
!另外,我在这里看不到这些文件:https://github.com/google/protobuf/tree/master/java/core/src/main/java/com/google/protobuf
【问题讨论】:
-
你应该使用 Bazel 来编译 protos。你到底想做什么?
-
在第一句话中我提到成功使用了 bazel。它会创建以下文件夹
bazel-bin bazel-fhir-master bazel-genfiles bazel-out bazel-testlogs CONTRIBUTING.md examples java LICENSE proto README.md testdata WORKSPACE。但是,没有 .java 协议缓冲区文件。 -
为什么需要 .java 文件?您应该使用 Bazel 来编译使用 protos 的 Java 代码。
-
我不想要任何特别的东西,我只想让它工作。据我了解,要在 Java 中使用 protobuf,我需要生成构建器文件。
标签: java bazel hl7-fhir protocol-buffers