多模块Maven项目升级JDK17后Lombok 1.18.26报找不到符号错误求助
JDK17升级后Lombok编译报错:找不到Builder类和getKey()方法的解决方案
问题背景
此前使用JDK8搭配Lombok 1.18.26一切正常,升级至JDK17后编译失败,报错如下:
error: cannot find symbol
[ERROR] symbol: class Builder
cannot find symbol
[ERROR] symbol: method getKey()
项目为多模块Maven结构:
MainProject | -subProject1 --> pom1.xml -subProject2 --> pom2.xml -subProject3 --> pom3.xml | - Main pom.xml - lombok.config
父pom中Lombok依赖配置:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.26</version> </dependency>
该问题在IntelliJ和Mac终端中均会出现,不属于IDE特有问题。
解决方案
1. 升级Lombok版本到适配JDK17的稳定版
Lombok 1.18.26对JDK17的支持不完善,建议直接升级到1.18.30及以上版本(如1.18.32),修改父pom依赖:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.32</version> <scope>provided</scope> <!-- 避免打包进最终产物 --> </dependency>
2. 正确配置Maven编译器插件的注解处理器
在父pom的pluginManagement中统一配置支持JDK17的maven-compiler-plugin,并明确指定Lombok注解处理器路径,避免子模块配置不一致:
<build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <!-- 需支持JDK17的插件版本 --> <configuration> <source>17</source> <target>17</target> <encoding>UTF-8</encoding> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.32</version> <!-- 和依赖版本保持一致 --> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </pluginManagement> </build>
若子模块单独配置了maven-compiler-plugin,需确保继承父pom配置,或同步添加注解处理器路径。
3. 完善lombok.config配置
在根目录的lombok.config中添加JDK17专属支持配置:
lombok.addLombokGeneratedAnnotation = true lombok.jdk17.support = true
该配置能让Lombok更好地适配JDK17的模块化与注解处理规则。
4. 清理Maven缓存并重新构建
终端执行以下命令,彻底清除缓存并强制更新依赖后重新编译:
mvn clean install -U
5. 检查代码中Lombok注解的规范性
- 确认
@Builder注解正确应用在类上,且类中未手动定义与Builder冲突的方法; - 检查
getKey()对应的字段是否被@Getter注解覆盖,字段命名是否符合驼峰规则(避免因命名问题导致生成的getter方法名不匹配)。
内容的提问来源于stack exchange,提问作者Sammidbest
相关产品推荐
相关产品推荐

