You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多模块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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 23:04:56