Java代码中的Java注释处理

时间:2015-02-12 12:50:09

标签: compilation annotations java-8

这是与我的帖子有关的进一步问题 - > 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”)语句。

任何人都可以在这里看到一些明显的东西吗?

非常感谢

0 个答案:

没有答案