Java Annotation Processing Messager API消息未显示

时间:2013-08-26 08:57:40

标签: java eclipse annotations annotation-processing

我有一些带有自定义注释的接口,用于添加元数据。具体而言,这些接口表示数据库中的表,注释说明接口应该映射到哪个表以及属性是哪些列。

我使用注释处理来生成执行某些工作的代码文件,例如从数据库加载数据等。我还有ValidationProcessor,如果所有需要的元数据都可用,则应该验证接口等等。当我验证注释时,我想显示警告和错误,以便明确哪些不正确以及出现问题的位置。

为了打印消息,我使用Messager API。以下是我使用kind例如的代码。 Kind.ERROR,msg是消息,元素是发生错误的元素(它是实现Element接口的Type)。

processingEnv.getMessager().printMessage(kind, msg, element, null, null);

根据我的互联网研究(包括有关stackoverflow的类似文章),这应该是正确显示消息的方法。然而,消息不会显示。

我的问题是,有没有人知道可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

您创建邮件的方式是正确的,但您可以使用

printMessage(kind, msg, element);

如果您不想在注释或注释值上显示消息。覆盖处理器的init方法时,请务必致电super.init(processingEnv)以使其设置正确。

听起来处理器因执行中的某些错误而失败。如果存在未捕获的异常,则处理器将以静默方式失败,然后它将不显示任何消息。要调试注释处理器,请激活错误日志视图:

Window > Show View > Error Log

在此视图中,您应该看到 messager 的每条消息以及处理器抛出的任何未捕获的异常。堆栈跟踪应该可以帮助您找到错误。