2

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

我使用注释处理来生成代码文件,这些代码文件执行一些工作,例如从数据库加载数据等。如果所有需要的元数据都可用,我还有一个ValidationProcessor应该验证接口等等。当我验证注释时,我想显示警告和错误,以便清楚什么不正确以及问题发生在哪里。

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

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

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

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

4

1 回答 1

1

您创建消息的方式是正确的,尽管您可以使用

printMessage(kind, msg, element);

如果您不想在注释或注释值上显示消息。覆盖处理器的init方法时,请确保调用super.init(processingEnv)它以正确设置它。

听起来处理器由于执行中的一些错误而失败。如果有未捕获的异常,处理器将静默失败,然后它不会显示任何消息。要调试注释处理器,请激活错误日志视图:

窗口 > 显示视图 > 错误日志

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

于 2013-09-17T07:57:04.037 回答