[ERROR]: cannot find symbol variable log when building with maven and lombok
我正在尝试使用maven和lombok的@ Slf4j Logger构建Java 11项目,但是maven无法识别
错误是
1 | [ERROR]: cannot find symbol variable log |
项目和模块SDK均为Java11。Lombok版本为1.18.2:
1 2 3 4 5 6 | <dependency> <groupId>org.projectlombok</groupId> lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </dependency> |
我的Maven编译器设置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>11</source> <target>11</target> <forceJavacCompilerUse>true</forceJavacCompilerUse> <path> <groupId>org.projectlombok</groupId> lombok</artifactId> <version>1.18.12</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build> |
我已经尝试过:
- 关闭并再次打开注释处理
- 重新安装Lombok插件
- 清除.m2 / repository文件夹
- 手动添加lombok.jar作为注释处理器
-
将Lombok路径添加到注释处理器的
maven-compiler-plugin 列表
这是使用
您需要一个日志外观和一个实现,在这种情况下,我将使用slf4j(作为外观)和logback(作为实现)。
pom.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> untitled</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.projectlombok</groupId> lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.slf4j</groupId> slf4j-api</artifactId> <version>1.7.30</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> logback-classic</artifactId> <version>1.2.3</version> </dependency> </dependencies> </project> |
main.java
1 2 3 4 5 6 7 8 9 | import lombok.extern.slf4j.Slf4j; @Slf4j public class Main { public static void main(String[] args) { log.debug("Hello"); } } |
如果遇到麻烦,请始终尝试强制在项目文件夹
我的怀疑是由于Lombok在编译过程中出现问题,这是一个误导性的错误消息。
在字节码中,没有导入的概念。类将被其完全限定的名称替换(例如
由于
在Lombok附加了
因为Lombok在编译过程中进行了更改,所以我猜像这样的虚假错误总是可能的。也许Lombok开发人员可以通过自己检查
如果为SLF4J添加依赖项,则编译器将不再抱怨。