사내 독점 프로그래밍 언어 용 사용자 정의 코드 생성기를 작성하려고합니다. protoc 플러그인 가이드를 사용하여 Java로 생성기를 작성할 수 있다고 생각했습니다. 어떻게 호출 할 :;Java에서 사용자 정의 Protobuf CodeGenerator를 작성하는 방법
문제가 (실제로 생성 로직을 작성하기 전에 먼저 작업 뭔가 그루터기를 얻고 싶었다 분명히 나는 이제 막 시작했습니다가)
public static void main(String[] args) throws IOException {
CodeGenerator gen = new CodeGenerator();
PluginProtos.CodeGeneratorRequest codeGeneratorRequest = PluginProtos.CodeGeneratorRequest.parseFrom(args[0].getBytes());
codeGeneratorRequest.getProtoFileList().forEach(gen::handleFile);
// get the response and do something with it
//PluginProtos.CodeGeneratorResponse response = PluginProtos.CodeGeneratorResponse.newBuilder().build();
//response.writeTo(System.out);
}
:() 내 주요는 다음과 같이 수행 protoc을 --plugin 인수와 함께 사용하면 내 플러그인을 사용하여 사용자 정의 언어로 코드를 생성 할 수 있습니까? 나는 이런 식으로 그것을 할 쉘 스크립트를 작성 시도 :
#!/bin/bash
java -cp ./codegen.jar CodeGeneratorMain "[email protected]"
을 그리고이 같은 protoc를 호출 시도 : 그것은 생각으로
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at CodeGeneratorMain.main(CodeGeneratorMain.java:12) --code_out: protoc-gen-code: Plugin failed with status code 1.
: 그러나 protoc --plugin=protoc-gen-code --code_out=./build hello.proto
나는 것을 실행하면,이 오류가 발생합니다 CodeGeneratorRequest를 stdin에 전혀 전달하지 않습니다. 어떻게 확인할 수 있습니까? 나는 분명히 잘못된 것을하고 있습니까?
잠재적으로 약간의 OT : Java 코드 생성을 찾고 있다면 https://github.com/square/javapoet을 볼 가치가 있습니다. –
자바 클래스를 생성하지 않을 것입니다. ProtoBufs는 이미 Java 소스를 생성 할 수 있습니다. 이것은 비 Java 코드를 생성하는 Java 플러그인입니다. – FreeMemory