将项目从 Spring Boot 2.7 升级到 3.0 后,我得到了
找不到符号
由于 Lombok 生成的代码而导致编译器错误。
有什么方法可以让它协同工作 - Spring Boot 3 和 Lombok 注释。
您应该更新到最新版本的 lombok
1.18.24
,它运行时没有问题 spring-boot-3.0.1
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
问题实际上并不是从
spring-boot
发生的,而是从 jdk
发生的,因为 spring-boot-3
需要最低限度的 jdk17
并且旧版本的 lombok 与 jdk17
或更新版本不兼容。
从changelog可以看出,
lombok 1.18.22
是第一个兼容jdk17的版本。
Lombok版本可以交给Spring来管理。
如果您使用 Maven,这里有一个示例:
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<finalName>project-name</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>17</source>
<target>17</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
在终端上运行
mvn clean install
进行测试。
我有同样的问题,对我来说问题是注释处理不起作用,因为我仅为 jpamodelgen 而不是 lombok 指定了注释处理路径,就像这样
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<fork>true</fork>
<compilerArguments>
<Xmaxerrs>10000</Xmaxerrs>
</compilerArguments>
<annotationProcessorPaths>
<path>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-jpamodelgen</artifactId>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
删除并且不指定任何路径为我修复了它,或者您可以将所有注释处理器添加到 Maven 插件