我有一些带有自定义注释的接口,用于添加元数据。具体而言,这些接口表示数据库中的表,注释说明接口应该映射到哪个表以及属性是哪些列。
我使用注释处理来生成执行某些工作的代码文件,例如从数据库加载数据等。我还有ValidationProcessor
,如果所有需要的元数据都可用,则应该验证接口等等。当我验证注释时,我想显示警告和错误,以便明确哪些不正确以及出现问题的位置。
为了打印消息,我使用Messager API。以下是我使用kind
例如的代码。 Kind.ERROR
,msg是消息,元素是发生错误的元素(它是实现Element
接口的Type)。
processingEnv.getMessager().printMessage(kind, msg, element, null, null);
根据我的互联网研究(包括有关stackoverflow的类似文章),这应该是正确显示消息的方法。然而,消息不会显示。
我的问题是,有没有人知道可能出现什么问题?
答案 0 :(得分:1)
您创建邮件的方式是正确的,但您可以使用
printMessage(kind, msg, element);
如果您不想在注释或注释值上显示消息。覆盖处理器的init
方法时,请务必致电super.init(processingEnv)
以使其设置正确。
听起来处理器因执行中的某些错误而失败。如果存在未捕获的异常,则处理器将以静默方式失败,然后它将不显示任何消息。要调试注释处理器,请激活错误日志视图:
在此视图中,您应该看到 messager 的每条消息以及处理器抛出的任何未捕获的异常。堆栈跟踪应该可以帮助您找到错误。