eclipse安装lombok插件解决 @Slf4j 等找不到log变量问题


一、背景:
以前的Java项目中,充斥着太多不友好的代码,如:POJO的getter/setter/toString;异常处理;I/O流的关闭操作等,这些样板代码既没有技术含量,又影响着代码的美观,因此Lombok应运而生。

任何技术的出现都是为了解决某一类问题,如果在此基础上再建立奇技淫巧,不如回归Java本身,应该保持合理使用而不滥用。


二、具体使用和安装
1)引入相应的maven包
    <dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>

Lombok的scope=provided,说明它只在编译阶段生效,不需要打入包中。事实正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件。

2)前往官网下载:https://projectlombok.org/download lombok.jar
3)将lombok.jar放在eclipse的安装目录下。
4)cmd窗口(Windows系统)或Shell窗口(Linux 系统)执行命令:java -jar lombok.jar
5)基于4),在弹出的窗口中点击Specify location.. 选择eclipse 的安装目录。然后点击install/update。
安装成功,退出,在eclipse.ini中会看到新增lombok.jar一行。
6)有时可能这样自动安装的路径导致eclipse无法启动,可以将eclipse.ini文件自动追加的一行修改为如下:
-Xbootclasspath/a:lombok.jar
-javaagent:lombok.jar
7)启动eclipse ,clean。错误消失。

三、关于lombok的使用简要说明
1. @NonNull:可以帮助我们避免空指针。
import lombok.NonNull;
public class NonNullExample extends Something {
     private String name;
     public NonNullExample(@NonNull Person person) {
          super("Hello");
          this.name = person.getName();
     }
}


2. @Cleanup: 自动帮我们调用close()方法。
import lombok.Cleanup;
import java.io.*;
public class CleanupExample {
public static void main(String[] args) throws IOException {
     @Cleanup InputStream in = new FileInputStream(args[0]);
     @Cleanup OutputStream out = new FileOutputStream(args[1]);
     byte[] b = new byte[10000];
     while (true) {
              int r = in.read(b);
              if (r == -1) break;
              out.write(b, 0, r);
     }
}
}

3. @Getter / @Setter: 自动生成Getter/Setter方法
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
public class GetterSetterExample {
@Getter @Setter private int age = 10;
@Setter(AccessLevel.PROTECTED) private String name;
}

4. @NoArgsConstructor: 自动生成无参数构造函数。

5. @AllArgsConstructor: 自动生成全参数构造函数。

6. @Data: 自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字段添加@Setter,和@RequiredArgsConstructor!

备注:网上关于lombok的使用,争议较多,我个人虽不是很喜欢,但有时候还是具体情况具体对待了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM