javax.annotation.processing.AbstractProcessor:编译生成的代码

时间:2015-04-27 10:10:32

标签: java code-generation javac annotation-processing

使用javax.annotation.processing.AbstractProcessor

生成Java代码时
(...)
FileObject file=filer.createResource(StandardLocation.CLASS_OUTPUT,"xx","Hello.java");
PrintWriter writer=new PrintWriter(file.openWriter());
writer.println("package xx;\npublic class Hello { }");
writer.close();
(...)

我应该第二次运行javac来编译生成的代码,还是有一个hack来告诉javac动态编译新类?

1 个答案:

答案 0 :(得分:1)

如果您使用createSourceFile方法,则应为您编译新的源代码。你的"创造"方法应如下所示:

FileObject file = filer.createSourceFile("xx.Hello");

如果某些现有元素"引起"要生成此内容,您应将其作为createSourceFile添加到originatingElement调用。