Spring Boot项目中Lombok无法生成Getter/Setter等方法的问题求助
环境信息
- IDE:Eclipse
- Spring Boot版本:3.2.0-SNAPSHOT
- Java版本:17
- 已通过Maven引入Lombok依赖,且安装了Lombok插件
项目POM配置
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.0-SNAPSHOT</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.springbootExample</groupId> <artifactId>SpringBoot_Example</artifactId> <version>0.0.1-SNAPSHOT</version> <name>SpringBoot_Example</name> <description>Demo project for Spring Boot</description> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc --> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>12.4.2.jre11</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> <releases> <enabled>false</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> <releases> <enabled>false</enabled> </releases> </pluginRepository> </pluginRepositories> </project>
实体类代码(department.java)
package com.springbootExample.SpringBoot_Example.entity; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.validation.constraints.NotBlank; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Entity @Data @NoArgsConstructor @AllArgsConstructor @Builder public class department { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long departmentID; @NotBlank(message = "Please add department name") // @Length(max = 20, min = 10) // @Size // @Email // @Positive // @Negative // @PositiveOrZero // @Future // @Past // @FutureOrPresent private String departmentName; private String departmentAdress; private String departmentCode; }
错误现象
在Service实现类中调用实体类的getter方法时,IDE提示以下错误:
The method getDepartmentName() is undefined for the type department The method getDepartmentCode() is undefined for the type department The method getDepartmentAdress() is undefined for the type department
已尝试的方案
- 更新Eclipse IDE
- 更换Lombok插件版本
- 重新安装Lombok
解决思路
检查Eclipse注解处理器配置:
打开Eclipse偏好设置(Window > Preferences),依次进入Java > Compiler > Annotation Processing,确保Enable annotation processing和Enable processing in editor均已勾选;再进入Java > Compiler > Annotation Processing > Factory Path,点击Add External JARs,找到本地Maven仓库中Lombok的jar包(路径示例:~/.m2/repository/org/projectlombok/lombok/[对应版本]/lombok.jar),添加完成后重启Eclipse。验证Lombok插件状态:
打开Help > About Eclipse IDE,点击Installation Details,在已安装软件列表中搜索Lombok,确认插件已正常安装;若未找到,重新下载对应Eclipse版本的Lombok插件安装包,安装后重启IDE。清理并重构项目:
执行Maven命令mvn clean install清理项目,之后在Eclipse中右键项目选择Maven > Update Project,勾选Force Update of Snapshots/Releases,更新完成后重新编译项目。修正类名命名规范:
实体类名department不符合Java大驼峰命名规范,改为Department后,Lombok生成的getter方法会自动匹配为getDepartmentName(),避免因命名问题导致的识别异常(虽然Lombok支持小写类名,但规范命名能减少潜在问题)。确认Lombok依赖完整性:
检查本地Maven仓库中是否存在对应版本的Lombok jar包,若缺失则执行mvn dependency:resolve命令拉取依赖;POM中Lombok的<optional>true</optional>配置是合理的,无需修改。
内容的提问来源于stack exchange,提问作者Kelvin Huynh

