安装 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 内有视频教程 , 直播课程 , 等学习资料, 期待你的加入
来源: http://www.jianshu.com/p/5f37c6cde0d2