Java 注解处理 Messager API 消息未显示

标签 java eclipse annotations annotation-processing

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

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

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

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

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

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

最佳答案

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

printMessage(kind, msg, element);

如果您不想显示有关注释或注释值的消息。重写处理器的 init 方法时,请确保调用 super.init(processingEnv) 以便正确设置。

听起来处理器由于执行中的一些错误而发生故障。如果存在未捕获的异常,处理器将默默地失败,然后不会显示任何消息。要调试注释处理器,请激活错误日志 View :

Window > Show View > Error Log

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

关于Java 注解处理 Messager API 消息未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18440301/

相关文章:

java - hibernate ID增量oracle

java - HostServices.showDocument : Default Application in Linux

java - Java中的匿名子类方法

java - sudo 登录后使用 Java JSch 程序执行多个 bash 命令

java - 为什么我不能在 eclipse.ini 中将 -Xmx 设置为 1024m?

java - STS 全部构建按钮呈灰色

java - 下载某些 Excel 文件并解释其某些值

java - 使用注释指定哪些类/接口(interface)应该生成javadoc?

java - RSA 算法适用于 Android 4.3,但适用于 Android 2.3.3

java - 类型注释属于有界通配符的什么位置?