栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

编译期注解处理器 javax.annotation.processing.Processor: Provider not found + maven 找不到符号问题 + @Autoservice无效

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

编译期注解处理器 javax.annotation.processing.Processor: Provider not found + maven 找不到符号问题 + @Autoservice无效

草!搞了整整三天 两个问题跳来跳去的

javax.annotation.processing.Processor: Provider not found

先是javax.annotation.processing.Processor: Provider not found
试了https://blog.csdn.net/zimou5581/article/details/98208143

结果maven编译一直疯狂报 找不到符号 问题,可是idea 内置build明明能通过!!!

后来终于试出来了,就是 -proc:none 这个(none这个也是,表示样的意思),就是这个导致了lombok、slf4j不起效!!!

但是不加就会找不到processor,加了之后其他外部编译期注解就不能用了

解决办法

后来看了很多资料,才解决

本质上你可以先编译processor以及相关的源文件,再把jar包导入项目,然后再去使用这个包里的注解。

也可以像我这样,单独把processor和注解放在一个父项目下的子项目,为的就是与lombok、slf4j脱离任何关系,然后通过maven的跳过执行处理器设置。这个子项目的pom中配置插件如下

 
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.8.1
                
                    1.8
                    1.8
                    UTF-8
                    none
                
            
 

然后再到另外的项目中去使用注解

后续问题

改了上面的配置之后,不再编译报错了
但是发现注解不生效,也就是没有启动到processor
然后查看processor编译后的jar包发现META-INF/services里没有那个注册文件,也就是说谷歌的@Autoservice没有生效

在StackOverflow上发现

解决办法
将版本从1.0-rc2改至1.0-rc6

        
            com.google.auto.service
            auto-service
            1.0-rc6
        

再把上面解决办法里pom文件的none删掉,发现成功了

结论

等于说,none加不加无所谓,processor所在项目一定要先编译打包成jar后,再到别的项目去用那个注解!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821149.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号