Eclipse - 安装lombok后注解无效

释放双眼,带上耳机,听听看~!

安装 lombok

lombok 的安装过程挺简单的,网上已经有很多相关的博客,这里就不在多说了,可以参考这篇:eclipse集成lombok注解不起作用
但是我按照网上的方式安装之后,注解一直不起作用,运行的时候一直报找不到getter,setter方法。期间我以为是自己安装的不对,反反复复安装了几次还是不行,找了很多博客看,发现其实安装的方法都是一样的,在排除了有可能是jar包的版本与Eclipse的版本不兼容的问题后,我想可能问题不在这里,lombok我应该是已经安装成功了的,但是为什么不起作用呢?
其实这里面有个坑,博客里面都有说,在安装好lombok后,需要重新启动Eclipse,重新编译 项目。注解不起作用的关键就在于你是如何编译项目的。

编译项目

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

Eclipse - 安装lombok后注解无效

但是这种编译项目的方式是不行的,我们把编译后生成的.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

Eclipse - 安装lombok后注解无效

Eclipse - 安装lombok后注解无效

再来看看,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文件里面又没有我们要的方法了。

Eclipse - 安装lombok后注解无效

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

Eclipse - 安装lombok后注解无效

给TA打赏
共{{data.count}}人
人已打赏
随笔日记

python网络-Socket之udp编程(24)

2020-11-9 4:30:31

随笔日记

获得多个子线程的结果,面试和工作中你会遇到的多线程问题

2020-11-9 4:30:33

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索