How to compile google-fhir proto files

大憨熊 提交于 2019-12-08 07:12:51

问题


Looking at the readme for google-fhir it says to run bazel build, which works, however none of the protocol files have been compiled.

Running protoc --proto_path=. --java_out=. proto/stu3/resources.proto returns a bunch of error about other protos not being found. This goes backwards until 'descriptor.proto' which is not a proto in the folder. None of the protocol files in that directory will manually compile into java files.

*On another note, I was able to take other example protos from other sources and compile those successfully.

UPDATE

Running the command protoc --proto_path=proto/stu3/ --java_out=target proto/stu3/resources.proto from the google-fhir base directory returns the following output:

~/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.
...
...


Those files are definitely located in the same proto directory.

UPDATE 2

Well, this definitely doesn't work right out of the box. Moving the files around, I was able to generate the target folder with a bunch of Java files. However, trying to compile them, I get errors for files that don't exist:

  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.

! Also, I don't see these file here: https://github.com/google/protobuf/tree/master/java/core/src/main/java/com/google/protobuf


回答1:


it looks like your command for compilation is not well formatted: --proto_path= This is the path to your proto --java_out= This is the folder where your class will be compiled

Your arguement is: proto/stu3/resources.proto, so I deduce that your files are located in proto/stu3.

Could you try this command and let us know if it worked for you:

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

If your proto descriptor are complete, you should have no compilation error, and your result should be in the folder "target".

EDIT: looking at your latest edit, I would say that you should move resources.proto into your base directory and run the following command: protoc --proto_path=. --java_out=target resources.proto

As the path to your import is coded in your import. This is a bit difficult to help, as we don't have access to your entire proto descriptor. If you took it from an online repo, it would help if you could share it.



来源:https://stackoverflow.com/questions/49950107/how-to-compile-google-fhir-proto-files

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