这是与我的帖子有关的进一步问题 - > java8 tools.jar annotation processing with apt
我已经完成了以下代码,用java编译器替换了apt工具。
首先,我使用javax库创建一个注释处理器,如下所示:
public class MyAnnotationProcessor extends AbstractProcessor {
@Override
public boolean process(Set<? extends TypeElement> annotations,
RoundEnvironment roundEnv) {
System.out.println("annotation processing");
return false;
}
}
然后在我的主要代码中,我将语句int aptReturnCode = com.sun.tools.apt.Main.process(myAnnotationProcessorFactory...)
替换为以下代码:
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromStrings(Arrays.asList("C:/Test/FileToCompile.java"));
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnostics, null,
null, compilationUnits);
ArrayList<Processor> processors = new ArrayList<Processor>();
processors.add( new MyAnnotationProcessor() );
task.setProcessors( processors );
boolean success = task.call();
但问题是上面的语句返回true但不触发System.out.println(“annotation processing”)语句。
任何人都可以在这里看到一些明显的东西吗?
非常感谢