私は独自のプログラミング言語用のカスタムコードジェネレータを作成しようとしています。私は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);
}
:)(私のメインは、このような何かを行います私のカスタム言語でプラグインを使用してコードを生成するには、--plugin引数でprotocを使用しますか?私はこのようにそれを行うには、シェルスクリプトを書いてみました:
#!/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を見てみる価値があります。 –
Javaクラスを生成するつもりはありません。 ProtoBufsは既にJavaソースを生成できます。これはJava以外のコードを生成するためのJavaプラグインです。 – FreeMemory