我正在用JCodeModel生成java源代码,现在想在运行时编译。但我之前不想将Java文件写入光盘。
据我所知,javax.tools.JavaCompiler(see example)可以进行动态编译,但看起来我需要源代码。
不幸的是我找不到直接从JDefinedClass获取源代码的方法。好像我需要将JDefinedClass写入光盘上的File对象并随后读取源代码。
这真的有必要还是有一些解决方法?
答案 0 :(得分: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