安装 lombok

lombok 的安装过程挺简单的,网上已经有很多相关的博客,这里就不在多说了,可以参考这篇:eclipse集成lombok注解不起作用

但是我按照网上的方式安装之后,注解一直不起作用,运行的时候一直报找不到getter,setter方法。期间我以为是自己安装的不对,反反复复安装了几次还是不行,找了很多博客看,发现其实安装的方法都是一样的,在排除了有可能是jar包的版本与Eclipse的版本不兼容的问题后,我想可能问题不在这里,lombok我应该是已经安装成功了的,但是为什么不起作用呢?

其实这里面有个坑,博客里面都有说,在安装好lombok后,需要重新启动Eclipse,重新编译 项目。注解不起作用的关键就在于你是如何编译项目的。

编译项目

  1. 我们一般编译项目的方式可能是选中项目然后点projecg -> clean

但是这种编译项目的方式是不行的,我们把编译后生成的.class文件反编译一下看看。

这是文件源码:

import lombok.AllArgsConstructor;
import lombok.Getter; @Getter
@AllArgsConstructor
public enum ResponseCode {
SUCCESS(10001,"请求成功"),
ERROR(10000,"请求失败"),
ILLEGAL_ARGUMENTS(1,"请求参数不合法")
; private final Integer code;
private final String desc;
}

class 文件反编译后是这个样子

public enum ResponseCode
{
SUCCESS(Integer.valueOf(10001), "请求成功"),
ERROR(Integer.valueOf(10000), "请求失败"),
ILLEGAL_ARGUMENTS(Integer.valueOf(1), "请求参数不合法"); private final Integer code;
private final String desc; }

我们可以看到,反编译后的文件里面并没有生成getter ,setter方法还有构造方法

  1. 我们用另外一种方式来编译项目看看,即用maven的编译插件来编译项目,使用命令 clean compile

再来看看,class文件是这样的

package com.beautifulsoup.chengfeng.enums;

public enum ResponseCode
{
SUCCESS(Integer.valueOf(10001), "请求成功"),
ERROR(Integer.valueOf(10000), "请求失败"),
ILLEGAL_ARGUMENTS(Integer.valueOf(1), "请求参数不合法"); private final Integer code;
private final String desc; private ResponseCode(Integer code, String desc)
{
this.code = code;this.desc = desc;
} public Integer getCode() { return this.code; }
public String getDesc() { return this.desc; }
}

可以看到我们需要的方法都生成了!

编译时如果报如下的错误:

[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.436 s
[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) on project manage: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[ERROR] -> [Help 1]

可以用如下的博客解决,亲测可用!

关于Maven项目build时出现No compiler is provided in this environment的处理

其它

  1. 建议把Eclipse的自动编译关掉,因为我们在修改一个带有lomok注解类并ctrl + s 以后是Eclipse的方式编译的,这里个生成的class文件里面又没有我们要的方法了。

  1. 另外如果你修改一个带有lomok注解的类并保存了,用mevaen编译以后显示有红叉,只要update 一下项目就好了。

Eclipse - 安装lombok后注解无效的更多相关文章

  1. eclipse 安装 lombok

    转载自http://bbs.itmayiedu.com/article/1527769518449 由于项目中有 @Slf4j 注解等,而 eclipse 需要安装 lombok 插件才能正常编译.由 ...

  2. eclipse安装ADT后在windows菜单下找不到android SDK and AVD Manager

    eclipse安装ADT后在windows菜单下找不到android SDK and AVD Manager选项的解决办法 - zhjr1220的专栏 - 博客频道 - CSDN.NET  http: ...

  3. STS和Eclipse安装Lombok插件

    参考:https://www.cnblogs.com/caozx/p/9510354.html 参考:https://blog.csdn.net/wutian90/article/details/87 ...

  4. Eclipse安装lombok及常用注解

    转自:https://blog.csdn.net/ZJDWHD/article/details/77795023 lombok的官方网址:http://projectlombok.org/ https ...

  5. eclipse安装lombok和常用注解使用

    1.下载lombok.jar lombok 的官方网址:http://projectlombok.org/   2.运行lombok.jar: java -jar  D:\eclipse-luna\l ...

  6. windows eclipse安装lombok插件

    1.下载lombok.jar,lombok.jar官方下载地址:https://projectlombok.org/download 2.双击下载好的lombak.jar,安装步骤如下: 2-1.关闭 ...

  7. Mac Eclipse安装lombok

    Lombok是一个可以通过注解的形式可以帮助消除一些必须但是显得很臃肿的Java代码的工具,通过使用对应的注解,可以在进行编译源码的时候生成对应的方法,比如类属性的get/set/toString() ...

  8. (转) eclipse安装lombok

    lombok的官方网址:http://projectlombok.org/ 1. lombok的安装: 使用lombox是需要安装的,如果不安装,IDE则无法解析lombox注解,有两种方式可以安装l ...

  9. Mac 下eclipse安装Lombok插件

    在官网下载最新版本的 JAR 包. 将 lombok.jar 放在eclipse安装目录下,和 eclipse.ini 文件平级的. 注意,mac操作系统下eclipse的安装路径下有两个eclips ...

随机推荐

  1. linux 命令基础大全

    pwd:显示当前路径 cd :切换目录 用法:cd cd ../ 切换到上级目录 cd /   切换到根目录 cd ~  (或只有cd )切换到当前用户主目录(home底下以用户名命名的文件夹) /r ...

  2. 返回表对象的方法之一--bulk collect into

    1.创建表对象的类型(oracle Types类目录下) create or replace type obj_table1 as object( xzq nvarchar2(19), mj numb ...

  3. Eclipse里JAR文件的打包和使用

    作用:用于封装class.properties文件,是文件封装的最小单元:     包含Java类的普通库.资源(resources).辅助文件(auxiliary files)等.     可以将程 ...

  4. 初窥css---盒子以及盒子扩展

    盒子以及盒子扩展 盒子 盒子是用来实现将网页区域化的一个非常重要的工具,盒子使得网页各部分十分清晰的被分开,对于程序员十分友好(...),并且使得网页更加容易维护. 盒子的常用属性 宽和高这两个属性就 ...

  5. c++ primer plus 第二章 \n与endl在输出上的区别

        在书上看到如下一段话:     一个差别是,endl确保程序继续运行前刷新输出(将其立即显示在屏幕上):而使用"\n"不能提供这样的保证,这意味着在有些系统中,有时可能在您 ...

  6. QGridLayout

    Help on class QGridLayout in module PyQt5.QtWidgets: class QGridLayout(QLayout) |  QGridLayout(QWidg ...

  7. vpshere6 ESXI 禁止登陆 "执行此操作的权限被拒绝"

    vCenter在添加ESXI主机时,锁定模式选择“正常”,导致无法直接登陆ESXI宿主机,现象如下: 解决方法:

  8. 使用redis可能出现的问题

    1)缓存与数据库双写不一致 2)缓存雪崩 3)缓存穿透 由于缓存中不存在某个key,所有的请求都会落到数据库上,会对数据库造成很大压力,甚至崩溃 一个简单的方案是将不存在的数据也缓存起来(value值 ...

  9. svg-sprite使用

    chainWebpack(config) { config.module .rule('svg') .exclude.add(path.resolve(__dirname,'src/assets/ic ...

  10. html实体命名

    本文转自:http://www.cnblogs.com/kiter/archive/2011/08/05/2128309.html (转发备用) 1.特色的 © © © 版权标志 |   | 竖线,常 ...