安装 lombok
lombok 的安装过程挺简单的,网上已经有很多相关的博客,这里就不在多说了,可以参考这篇:eclipse集成lombok注解不起作用
但是我按照网上的方式安装之后,注解一直不起作用,运行的时候一直报找不到getter,setter方法。期间我以为是自己安装的不对,反反复复安装了几次还是不行,找了很多博客看,发现其实安装的方法都是一样的,在排除了有可能是jar包的版本与Eclipse的版本不兼容的问题后,我想可能问题不在这里,lombok我应该是已经安装成功了的,但是为什么不起作用呢?
其实这里面有个坑,博客里面都有说,在安装好lombok后,需要重新启动Eclipse,重新编译 项目。注解不起作用的关键就在于你是如何编译项目的。
编译项目
我们一般编译项目的方式可能是选中项目然后点projecg -> clean
但是这种编译项目的方式是不行的,我们把编译后生成的.class文件反编译一下看看。
这是文件源码:
importlombok.AllArgsConstructor;importlombok.Getter;@Getter@AllArgsConstructorpublicenumResponseCode{SUCCESS(10001,"请求成功"), ERROR(10000,"请求失败"), ILLEGAL_ARGUMENTS(1,"请求参数不合法") ;privatefinalInteger code;privatefinalString desc; }
class 文件反编译后是这个样子
publicenumResponseCode{SUCCESS(Integer.valueOf(10001),"请求成功"), ERROR(Integer.valueOf(10000),"请求失败"), ILLEGAL_ARGUMENTS(Integer.valueOf(1),"请求参数不合法");privatefinalInteger code;privatefinalString desc;}
我们可以看到,反编译后的文件里面并没有生成getter ,setter方法还有构造方法
我们用另外一种方式来编译项目看看,即用maven的编译插件来编译项目,使用命令 clean compile
再来看看,class文件是这样的
packagecom.beautifulsoup.chengfeng.enums;publicenumResponseCode{ SUCCESS(Integer.valueOf(10001),"请求成功"), ERROR(Integer.valueOf(10000),"请求失败"), ILLEGAL_ARGUMENTS(Integer.valueOf(1),"请求参数不合法");privatefinalInteger code;privatefinalString desc;privateResponseCode(Integer code, String desc){this.code = code;this.desc = desc; }publicIntegergetCode(){returnthis.code; }publicStringgetDesc(){returnthis.desc; }}
可以看到我们需要的方法都生成了!
编译时如果报如下的错误:
[ERROR] COMPILATION ERROR : [INFO] -------------------------------------------------------------[ERROR] No compilerisprovidedinthisenvironment. Perhaps you are runningona JRE rather than a JDK?[INFO]1error[INFO] -------------------------------------------------------------[INFO] ------------------------------------------------------------------------[INFO] BUILD FAILURE[INFO] ------------------------------------------------------------------------[INFO] Total time:1.436s[INFO] Finished at:2017-06-28T11:16:07+08:00[INFO] Final Memory:10M/151M[INFO] ------------------------------------------------------------------------[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile)onproject manage: Compilation failure[ERROR] No compilerisprovidedinthisenvironment. Perhaps you are runningona JRE rather than a JDK?[ERROR] -> [Help1]
可以用如下的博客解决,亲测可用!
关于Maven项目build时出现No compiler is provided in this environment的处理
其它
建议把Eclipse的自动编译关掉,因为我们在修改一个带有lomok注解类并ctrl + s 以后是Eclipse的方式编译的,这里个生成的class文件里面又没有我们要的方法了。
另外如果你修改一个带有lomok注解的类并保存了,用mevaen编译以后显示有红叉,只要update 一下项目就好了。
进群:697699179可以获取Java各类入门学习资料!
这是我的微信公众号【编程study】各位大佬有空可以关注下,每天更新Java学习方法,感谢!
学习中遇到问题有不明白的地方,推荐加小编Java学习群:697699179内有视频教程 ,直播课程 ,等学习资料,期待你的加入
网友评论