关于@AllArgsConstructor注解(全参构造)失效,报错程序报错java: 无法将类xxx中的构造器 xxx应用到给定类型,原因:实际参数列表与实际参数列表长度不同的问题解决
解决关于@AllArgsConstructor注解(全参构造)失效,报错程序报错java: 无法将类xxx中的构造器 xxx应用到给定类型,原因:实际参数列表与实际参数列表长度不同的问题,主要是注释插件,配置版本号
报错图片我没了,大概就是题目说的,今天我打开程序准备运行,结果报错,代码动都没动,前几天还能运行,今天却垮了,解决方案:
打开pom文件
注释插件
修改 Lombok版本号
不知道自己maven版本号的 ,打开右侧maven查看
然后右上角加载maven更改
问题解决,运行成功,然后你会神奇的发现,现在即使你恢复注释前和配置版本号之前,你也能运行
其他解决方案
刷新缓存
我在网上查的时候看到有人说刷新缓存(就是左上角文件里的是缓存失效)有用,我试了没用
重启电脑
还有人说重启也可以,我试了,对我没用
有时候就是会有这些奇奇怪怪的毛病,而且在我调试的时候发现一个让我震惊的事情,我打开了另一个项目,居然可以用全参注解,就是导致报错的那个注解,这个新打开的项目和报错的那个项目pom基本一样,报错项目中pom文件注释掉的代码另一个项目也有,但是就是没报错,简直气煞我也!!!
几个小时后,最让人无语的事情来了,我正用着新打开的项目呢,直接和上面一样的报错,没有构造器,就是检测不到全参构造呗,无语死了,幸好我有解决经验,不到十分钟搞定了
解决原理:
1.注解处理器冲突
项目中存在多个注解处理器(Java中是有内置的注解处理器,我们还配置了Lombok,所以有多个),它们在处理过程中相互干扰。maven-compiler-plugin
中对 Lombok 注解处理器的配置,可能与其他注解处理器(或编译器本身)在处理顺序、处理逻辑上产生冲突,导致 Lombok 不能正确生成全参构造。注释掉该插件配置后,这种冲突消失,Lombok 得以正常工作。
2.版本兼容性问题
maven-compiler-plugin
插件版本、Lombok 版本以及项目使用的 JDK 版本之间,可能存在兼容性问题。例如,插件配置要求的注解处理器运行环境,与 Lombok 实际所需的运行环境不一致,影响 Lombok 生成全参构造。注释掉插件配置后,编译器使用默认处理方式,刚好契合 Lombok 的运行条件。
可尝试更新 maven-compiler-plugin
插件和 Lombok 至最新稳定版本
更多推荐
所有评论(0)