如何为注释找到相应的处理器?例如,考虑来自JUnit的@Before注释。
Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Before {
}
我使用IDEA,通过搜索@Before它只找到用法。并且注释中的断点是不可能的。
答案 0 :(得分:1)
我认为应该可以找到使用断点的处理器,但它有点复杂。本文介绍如何在注释处理器上设置断点:
Debugging an annotation processor in every IDE
基本上你必须设置一些编译器标志,使编译器使用的JVM在调试模式下运行:
-J-Xdebug -J-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
我已尝试按照文章中的描述在eclipse中设置标记,但似乎此选项已被删除。我不知道在IDEA中这是否可行。
如果您不想调试特定处理器,可以尝试在init
javax.annotation.processing.AbstractProcessor
方法上设置断点 - 尽管不能保证每个处理器都会使用此摘要有些人可能有自己的javax.annotation.processing.Processor
实现。也不能保证注释仅由处理器处理,编译器可能直接处理一些注释。注释也可以在运行时处理,您可能需要在Annotation类本身中添加一些断点。
要在标准库类中设置断点,我必须attach the source in eclipse。