我认为我的maven对来自lombok的注释@Data有问题。
关于项目:Java 23 Spring Boot Version 3.3.4 也使用 Intellij Ultimate
错误出现在之后,就像mvn编译或当我启动应用程序时:
COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /*/controller/ImageController.java:[25,16] Symbol doesn't found
Symbol: Method getImages()
Location: Variable request from Typ *.dto.ImageUploadRequest
[ERROR] */controller/ImageController.java:[30,67] Symbol doesn't found
Symbol: Method getDataURL()
Location: Variable image from Typ *.entity.Image
我尝试过几种方法。顺便说一句,逻辑是有效的。serervall 重新启动后会出现此错误。 在航站楼:
mvn clean; mvn compile; mvn install; mvn clean install
POM但没有帮助
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.18.20.0</version>
</plugin> `This snippet from stackoverflow`
我尝试编写锅炉代码,是的,它可以工作,但这不是我行走的方式。我的用户看起来像这样:
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
@Entity
@Data
@NoArgsConstructor
@RequiredArgsConstructor
@Table(name = "player")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@NonNull
private String name;
@NonNull
private Integer score;
}
我的 pom 看起来像这样:
<properties>
<java.version>23</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>3.3.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>3.3.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>spring-boot</classifier>
<mainClass>*.ZoomOutApiApplication</mainClass>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.18.20.0</version>
</plugin>
</plugins>
</build>
由于依赖不受支持的 API/不安全操作,Lombok 通常会因(主要)Java 更新而中断。为了解决这个问题,Lombok 的开发人员会在新的 Java 版本出现问题时提供更新。
在您的情况下,您指定了 2023 年 9 月发布的版本 1.18.30,而 Java 23 于 2024 年 9 月发布。因此,要使用 Java 23 运行 Lombok,您应该更新到最新版本 1.18.36(位于写作时间)。在 changelog 中,您还可以看到该版本提到的 JDK 23。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.36</version>
</dependency>
您似乎也在使用
lombok-maven-plugin
。我认为这对于大多数目的来说都是不必要的,除非您出于任何原因要进行破坏。