使用lombok插件之后编译报错:Error(27,24)找不到符号

8 篇文章 0 订阅

一. lombok插件简介

1. 背景

JAVA面向对象编程中具有封闭性和安全性。封闭性即对类中的类变量进行封闭操作,用private来修饰类变量,将其封闭在类内部,这样其他类则不能访问该变量,提高了数据的安全性。

想要操作这些类变量时有两种方法,第一种是通过public方式的构造器(或称构造函数),对象一实例化就对该变量赋值。第二种是通过set和get方法进行赋值和取值,这样可以提高类变量的安全性,同时又保证了封装性。

当创建POJO类时,一般我们会使用开发工具对类变量生成set,get方法,虽然不是手动添加,但每个类都要做重复的生成操作,当变量名或修饰符改变了,我们就要重新生成set,get方法。

2. lombok插件的功能

Lombok能以简单的注解形式来简化java代码,提高开发效率。例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,代码会非常冗长,一旦修改属性,就容易出现忘记修改对应方法的失误。

Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString等方法。很神奇的就是在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法。这样就省去了手动重建这些代码的麻烦,使代码看起来更简洁些。

二. lombok插件的安装使用

首先在IDEA中安装Lombok插件,file—>settings—>plugins—>搜索Lombok插件,点击install即可。安装过之后重启IDEA插件才能生效。

在pom.xml文件中引入依赖坐标,roload project之后就会自动下载相应的jar包。
这里roload project 有两种方式,一是项目名称右键—>maven—>roload project,,,另一种是点击IDEA右边的Maven,点击刷新的图标,重新加载项目。
在这里插入图片描述
插件安装好之后,IDEA提示是否要Enable annotation processing,点击Enable即可。

也可以在安装好插件之后,依次点击File->setting -> Build,Execution,Deployment -> complier -> Annotation Processors中,点击右边的Enable annotation processing保存即可。

完成上述步骤之后,代码依旧编译不通过,提示,Error(27,24)找不到符号,错误定位到一个VO类里面的set方法处,分析到可能是Lombok插件没有生效,导致set方法没有自动生成。

检查了很多地方,也照着网上排查了很多原因,最后在D:\Software\maven-repository\org\projectlombok\lombok 这个路径下查看Lombok各个版本的文件夹中下载下来的内容。

最开始项目pom文件中配置的是1.18.16版本的Lombok,但是查看不同版本的插件文件夹内容,发现项目中使用的0.11.6版本和1.18.16版本的Lombok插件的文件夹中与其他版本文件夹中的内容不同,正常情况下,应该如下:
在这里插入图片描述
1.18.16版本的Lombok插件的文件夹中内容如下,只有.lastUpdated文件,说明在打包项目时,因为某些原因导致jar包下载不下来,出现很多.lastUpdated文件。将这些.lastUpdated文件删除之后,依然下载不了1.18.16版本的Lombok的jar包。

在这里插入图片描述

尝试修改插件版本为1.18.12,reload project,然后重新打包,即可build success。

三. 小结

  1. Lombok插件有问题时,可以考虑一下是否是版本问题,本地的maven仓库中1.18.12版本jar包存在,改成这个版本代码正常编译。
  2. 项目使用maven管理jar包,很容易因为各种原因(网速慢、断网)导致jar包下载不下来,从而出现很多.lastUpdated文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值