关键词
错误:java: Internal compiler error: java.util.ServiceConfigurationError: javax.annotation.processing.Processor: Provider lombok.launch.AnnotationProcessorHider$ClaimingProcessor not found at java.util.ServiceLoader.fail(ServiceLoader.java:239)
一.吃水不忘挖井人系列
IntelliJ IDEA使用eclipse compiler(ecj)解决lombok编译问题
二.javac和eclipse编译器有何不同?
我的理解就是eclipse更高级一点,
可以增量编译,
减少编译时间,
实现方法内部的热部署(用过eclipse的应该知道,debug模式下,修改方法体可以直接生效,但是修改成员变量和注解只能重启项目)
三.解决方式:实现eclipse编译器+lombok注解
1.maven的项目,加入lombok依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
2.更新依赖项
3.记下来这个路径,一会用
在你的本地库找到刚才下载的lombok.jar,我的文件路径是
D:\dev-tools\Maven\localRepository\org\projectlombok\lombok\1.18.10\lombok-1.18.10.jar
4.按照图片配置: 设置vm编译参数
我这个是idea2019.3的设置界面,配置里写上 -javaagent:路径
"构建,执行,部署" → 编译器 → User-local build process VM options(overrides Shared options):
"【或者它上边那个也行,因为我看下边这个会覆盖上边那个,而且是用户定义,所以我就写下边了,网上其它教程只是改的上边那个】"
中间不能有空格,否则报错,我填的是
-javaagent:D:\dev-tools\Maven\localRepository\org\projectlombok\lombok\1.18.10\lombok-1.18.10.jar
5.按照图片配置: 设置编译器为eclipse编译器ecj
6.按照图片配置: 开启注解处理
7.重新编译即可生效,无需重启idea,结束。
四.我个人遇到这个问题的整个过程
1.写了个String的压缩测试类,声明的String长度有28w多(反正特别长)
用javac编译的时候提示字符串过长没法编译通过,所以就改成了eclipse编译器
2.改完之后,String长度可以存下了,但是项目里其它用lombok的地方却提示无法找到set方法
3.刚开始搜索的都是报错的内容,后来还以为是idea2019.3不兼容lombok,卸载安装最新版
4.项目里的依赖也改成了最新版
5.发现还是不能用
6.后来百度lombok相关资料才知道,它是在javac编译的时候启作用的注解,所以改成eclipse之后无法识别注解
7.知道问题的根源,直接搜索关键词 idea使用eclipse编译器lombok
然后就搜索到相关的了,还真只有一篇
致敬:
IntelliJ IDEA使用eclipse compiler(ecj)解决lombok编译问题