使用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动态编译新类?
答案 0 :(得分:1)
如果您使用createSourceFile
方法,则应为您编译新的源代码。你的"创造"方法应如下所示:
FileObject file = filer.createSourceFile("xx.Hello");
如果某些现有元素"引起"要生成此内容,您应将其作为createSourceFile
添加到originatingElement
调用。