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 回答