微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我不能注册自己的注释处理器?

如何解决为什么我不能注册自己的注释处理器?

看来,我无法注册自己的注释处理器。但是使用Google的AutoService确实注册了我的注释处理器。而且效果很好。

因此,我确实将 javax.annotation.processing.Processor文件放置在resources/meta-inf/services目录下,该目录包含AbstractProcessor实现的包路径。而且我特别添加错误消息,该消息必须使构建失败,如下所示。

override fun process(annotations: MutableSet<out TypeElement>?,roundEnv: RoundEnvironment?) : Boolean {
    processingEnv.messager.printMessage(Diagnostic.Kind.ERROR,"Some Error !!")
    // Some work
}

我确实仔细检查了我的动作,但是我一开始无法弄清楚到底出了什么问题。

enter image description here

所以真正的问题是,为什么Google的AutoService可以工作而我的AutoService无法工作?那一直困扰着我。

解决方法

问题是注解处理器的默认方式似乎未在IDE上触发。至少,这是我乍看之下的观察结果。

经过几次乏味的审核,我比较了Google AutoService的javax.annotation.processing.Processor文件和我的文件。然后,我发现自己的文件命名是从空格开始的。这就是让我整夜不眠的原因。即使写这篇文章也让我感到羞耻,但我确实想分享我的不幸,以便其他遇到此类问题的人可以检查自己的工作中是否存在此类错误。我希望这个解决方案正是您想要的。

TL; DR

如果有任何拼写错误或多余的字符(包括空格),请检出javax.annotation.processing.Processor文件。

还有一个友好的建议,建议您使用 Google的AutoService 为您完成所有麻烦的工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。