3

カスタム アノテーション プロセッサが tomcat によって呼び出されていません。以下は、私が使用している注釈プロセッサ コードです。

@SuppressWarnings("restriction")
@SupportedAnnotationTypes("io.strati.rs.cxf2.bindings.MyAnnotation")
@SupportedSourceVersion( SourceVersion.RELEASE_8 )
public class SimpleAnnotationProcessor extends AbstractProcessor {

    public static List<String> str = new ArrayList<>();

    @Override
    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {

        System.out.println("Into annotation processor ... 2");

        for ( Element element : roundEnv.getElementsAnnotatedWith(MyAnnotation.class)) {
            System.out.println("Method name is:"+element.getSimpleName());
            str.add(element.getSimpleName().toString());
        }   
        return false;
    }
}

これは、カスタム アノテーションを持つすべてのメソッドのメソッド名を格納します。注釈クラスは次のようになります。

@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(value = RetentionPolicy.RUNTIME)
public @interface MyAnnotation {

}

次のようにTomcatアプリケーションでリストにアクセスしようとしています:

@GET
@Path("/dummy")
@MyAnnotation
@Produces({APPLICATION_JSON, APPLICATION_XML, TEXT_XML})
public void print(){
   System.out.println("List is:"+SimpleAnnotationProcessor.str);
}

メソッドに注釈があるにもかかわらず、リストが空として出力されます。Maven コンパイラ プラグインで注釈を指定し、META-INF/services/javax.annotation.processing.Processor で指定しました。注釈プロセッサが呼び出されない原因として考えられる理由を誰か教えてもらえますか?

4

1 に答える 1