zoukankan      html  css  js  c++  java
  • Eclipse

    安装 lombok

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

    编译项目

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

    uploading-image-461886.png

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

    uploading-image-798516.png

    uploading-image-289787.png

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

    uploading-image-840001.png

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

    uploading-image-949677.png

  • 相关阅读:
    敏捷实践:比每日会议更疯狂的半日会议!
    视频分享:编码与代码评审质量与现实的最激烈冲突点
    项目管理的“三边六拍”!
    挨踢项目求生法则需求篇
    恭喜一棵树博客开通
    盛大格子客或将继开心农场之后又一疯狂游戏
    离线安装.NETFRAMEWORK 3.5
    世界上尽有如此恶俗的软件还广为流传
    为什么是一棵树?
    java 之 注解
  • 原文地址:https://www.cnblogs.com/hoonick/p/10742468.html
Copyright © 2011-2022 走看看