添加Lombok 1.18.32后Java项目编译失败,提示‘Symbol not found’
解决Lombok 1.18.32在IntelliJ IDEA 2023.3.2中编译时Getter/Setter符号找不到的问题
以下是针对该问题的排查和解决步骤:
1. 确认构建工具依赖配置正确性
Maven项目
确保pom.xml中同时声明Lombok依赖,并在编译插件中指定注解处理器路径:
<!-- Lombok依赖 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.32</version> <scope>provided</scope> </dependency> <!-- 编译插件配置 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>17</source> <!-- 替换为你的项目JDK版本 --> <target>17</target> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.32</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build>
Gradle项目
在build.gradle中正确配置Lombok的编译依赖和注解处理器:
dependencies { compileOnly 'org.projectlombok:lombok:1.18.32' annotationProcessor 'org.projectlombok:lombok:1.18.32' } compileJava { options.annotationProcessorPath = configurations.annotationProcessor }
2. 细化IntelliJ注解处理配置
- 打开
Settings > Build, Execution, Deployment > Compiler > Annotation Processors,确认Enable annotation processing已勾选,且Store generated sources relative to选择Module content root。 - 检查项目的
target/generated-sources/annotations(Maven)或build/generated/sources/annotationProcessor/main/java(Gradle)目录是否被标记为Sources Root(右键目录 > Mark Directory as > Sources Root)。 - 执行
File > Invalidate Caches...,选择Invalidate and Restart,清理IDE缓存后重启。
3. 验证JDK版本兼容性
- 确认
File > Project Structure > Project中的Project SDK和Language Level与项目实际使用的JDK版本一致(Lombok 1.18.32支持JDK 8~21)。 - 检查模块级别的
Language Level是否与项目设置匹配(Project Structure > Modules > 对应模块 > Sources)。
4. 区分IDE与命令行编译行为
- 在终端执行
mvn clean install(Maven)或gradle clean build(Gradle),观察是否同样报错:- 若命令行编译失败:问题出在构建配置,回到步骤1检查依赖。
- 若命令行编译成功:执行IDE的项目同步操作(Maven:右侧面板点击
Reload All Maven Projects;Gradle:点击Reload Gradle Project),再重新编译。
5. 检查Lombok插件状态
- 打开
Settings > Plugins,搜索Lombok插件,确认其处于Enabled状态。若插件版本过旧,卸载后重新安装适配IntelliJ 2023.3.2的最新版本,然后重启IDE。
6. 验证实体类注解使用正确性
- 检查实体类上的
@Data、@Getter、@Setter等注解是否拼写正确,类本身为public访问权限。 - 确保类中没有语法错误(如未闭合的代码块、缺失的分号),这类错误会打断Lombok注解处理器的代码生成流程。
内容的提问来源于stack exchange,提问作者Maxim
相关产品推荐
相关产品推荐

