3

JCodeModel を使用して Java ソースを生成していますが、実行時にコンパイルしたいと考えています。しかし、以前に Java ファイルをディスクに書き込みたくありません。

私が見る限り、動的コンパイルは javax.tools.JavaCompiler (例を参照) で可能ですが、これにはソースコードが必要なようです。

残念ながら、JDefinedClass からソース コードを直接取得する方法が見つかりません。JDefinedClass をディスク上の File オブジェクトに書き込み、後でソースを読み取る必要があるようです。

これは本当に必要ですか、それとも回避策はありますか?

4

1 に答える 1

3

次のコードを使用して、ディスク操作を回避し、を使用してコードをメモリに直接書き込むことができますSingleStreamCodeWriter

JCodeModel jCodeModel = createJCodeModel(); // create and prepare JCodeModel 
ByteArrayOutputStream baos = new ByteArrayOutputStream();
CodeWriter codeWriter = new SingleStreamCodeWriter(baos);
jCodeModel.build(codeWriter);

String code = baos.toString(); // you can use toString(charset) if there are special characters in your code
于 2013-02-07T11:03:38.780 に答える