当前位置: 首页 > 知识库问答 >
问题:

如何编译google fhir原型文件

督灿
2023-03-14

查看google fhir的自述文件,它说要运行bazel build,这是可行的,但是没有编译任何协议文件。

运行protoc--proto_path=--java_out=。proto/stu3/resources。proto返回一系列关于找不到其他proto的错误。这会一直追溯到“描述符”。“proto”,它不是文件夹中的proto。该目录中的任何协议文件都不会手动编译为java文件。

*另一方面,我能够从其他来源获取其他protos示例并成功编译它们。

使现代化

运行命令proto--proto_path=proto/stu3/--java_out=target proto/stu3/resources。google fhir基本目录中的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

共有2个答案

充昌勋
2023-03-14

我通过根本不指定--proto_path=的实际路径来实现它。

我是怎么做到的

  • 我的文件夹结构如下:D:\dev\OpenSourceProjects\是我的基本文件夹
  • 在这个文件夹中,我有google fhir,这是我对github repo的克隆,还有protoc-3.11.3-win64,这是protoc二进制文件的解压
  • 例如,构建资源。protocmd中运行以下命令:

cd D:\dev\OpenSourceProjects\google fhir

D:\dev\OpenSourceProjects\proc-3.11.3-win64\bin\protoc.exe--proto_path=--java_out=./proto/输出.\proto\stu3\resources.proto

  • 注意--proto_path=在那里,但是空和所有其他路径都是相对的
慕仲渊
2023-03-14

看起来你的编译命令格式不太好:--proto_path=这是你的proto的路径--java_out=这是你的类将被编译的文件夹

你的论证是:proto/stu3/resources.proto,所以我推断你的文件位于proto/stu3中。

您可以尝试此命令并让我们知道它是否适合您:

protoc --proto_path=proto/stu3/ --java_out=target proto/stu3/resources.proto

如果您的原始描述符是完整的,您应该没有编译错误,并且您的结果应该在文件夹“目标”中。

编辑:看看你最新的编辑,我会说你应该把resources.proto移动到你的基本目录中,并运行以下命令:proc--proto_path=.--java_out=目标resources.proto

因为导入的路径是在导入中编码的。这有点难以帮助,因为我们无法访问您的整个原型描述符。如果你是从网上回购中获得的,如果你能分享它会有所帮助。

 类似资料:
  • 我已经编译了我的。proto文件使用protobuf编译器并收到了一组Java文件。我收到了一份原始文件。java文件和。中每个项目的java文件。proto文件,包括消息类型和每个RPC调用,例如publicKeyRequest。java和Quote。java作为RPC和请求参数类型。 这是所有需要的文件吗,因为我似乎仍然无法从服务器获得任何简单的响应? 我想为PublicKeyRequest

  • 我目前正在玩Jaeger Query,并试图通过使用gRPC的应用编程接口访问其内容。我不熟悉gRPC,但我的理解是,我需要在相关的原始文件上使用Python gRPC编译器(grpcio_tools.protoc)来获取有用的Python定义。我想做的是找出通过API访问Jaeger Query的方法,而无需前端UI。 目前,我一直在编译proto文件。每次尝试时,我都会遇到依赖性问题(导入“f

  • 我试图生成原型文件dart文件与协议插件遵循此指令https://grpc.io/docs/quickstart/dart/但当我运行此命令行 发生这种类型的错误 使用的依赖项 你好世界原型 我还尝试以下命令 如何生成或编译。飞镖/颤振中的原型文件 提前感谢:)

  • 我希望这是一个正确的词,“compile”。我在这里问,因为我甚至不知道谷歌需要什么来获取更多信息。 我想在这里使用此库:http://jiggawatt.org/badc0de/android/#gifflen 下载提供了一堆.cpp和.h文件。据我了解,我需要一个.so文件才能使用 我不知道的是如何将这些C文件编译成必要的. so文件?

  • 编译器架构