【问题标题】:Java AnnotationProcessor source codeJava AnnotationProcessor 源代码
【发布时间】:2012-04-09 14:28:45
【问题描述】:

谁能给我一个简单的java注释处理器的代码sn-p,当它的process方法被调用时,它只打印“foo”。我已经在这方面工作了 2 天,但我还没能走到那一步

这是我的代码:


public class ComplexityProcessor extends AbstractProcessor {

    public ComplexityProcessor() {
        super();
    }

    @Override
    public boolean process(Set annotations,
                           RoundEnvironment roundEnv) {
        String message = "annotation found in ";
        processingEnv.getMessager().printMessage(javax.tools.Diagnostic.Kind.NOTE, message);

        try {
            JavaFileObject jfo = processingEnv.getFiler().createSourceFile("Foo");
            BufferedWriter bw = new BufferedWriter(jfo.openWriter());
            bw.append("Bar!!!");
            bw.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        for (Element elem : roundEnv.getElementsAnnotatedWith(Complexity.class)) {
            Complexity complexity = elem.getAnnotation(Complexity.class);
            message = "annotation found in " + elem.getSimpleName()
                           + " with complexity " + complexity.value();
            processingEnv.getMessager().printMessage(javax.tools.Diagnostic.Kind.NOTE, message);
            try {
                JavaFileObject jfo = processingEnv.getFiler().createSourceFile("Foo");
                BufferedWriter bw = new BufferedWriter(jfo.openWriter());
                bw.append("Bar!!!");
                bw.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
        return true; // no further processing of this annotation type
    }

【问题讨论】:

标签: java annotations


【解决方案1】:

我已经找到答案了

那么你未来需要什么:

  1. 一个带有注释处理器和任何提到的注释的 jar,这样您就不会遇到类路径问题
  2. META-INF/services/processor 文件中带有处理器类名称的文本文件。这也放在我的处理器所在的罐子里
  3. 使用 javac -processor 参数进行编译。这是我最初使用的 3 或 4 个教程中没有提到的内容

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 2011-05-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 2012-05-24
    • 2012-07-04
    • 1970-01-01
    相关资源
    最近更新 更多