【MedusaSTears】IDEA使用eclipse compiler(ecj)后编译出错:lombok注解失效?--用javac编译器就没事,但是项目必须用eclipse编译器!

关键词

错误: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编译问题

自定义Lombok注解 在这里插入图片描述

二.javac和eclipse编译器有何不同?

参考:
Eclipse编译器与Javac的区别

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编译问题

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值