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

升级Spring Boot 3后执行Maven命令出现cannot find symbol builder()错误

升级Spring Boot 3后执行Maven命令出现cannot find symbol builder()错误

我看了你升级Spring Boot 3后碰到的这个Lombok相关的编译错误,太懂这种明明代码改了Jakarta、配置也调了,但Maven还是抽风的感觉!结合你贴的pom文件,核心问题其实是版本不兼容导致Lombok的注解处理器没正常工作,生成的builder方法没被Maven识别到,咱们一步步来解决:

问题根源拆解

  1. Spring Boot Maven插件版本脱节:你现在用的插件版本是2.6.14,这是Spring Boot 2.x时代的版本,和Spring Boot 3的Jakarta EE环境完全不匹配。旧插件不知道怎么在新环境下处理Lombok的注解生成,直接导致编译时找不到Lombok自动生成的builder方法。
  2. Lombok版本偏旧:你用的1.18.26虽然勉强支持Jakarta,但对Spring Boot 3的适配还不够完善,部分场景下注解处理器会失效。
  3. 版本依赖混乱:你的pom里Spring Boot Starter依赖都是无版本的(应该是继承了父pom),但却手动指定了旧版的插件,这种混合配置很容易引发冲突。

具体修复步骤

1. 对齐Spring Boot Maven插件版本

如果你的项目继承了Spring Boot 3的父POM,直接删掉spring-boot-maven-plugin的version标签,让它自动继承父POM的版本,这样能保证插件和Spring Boot核心版本完全一致;如果没继承父POM,就把插件版本改成和你用的Spring Boot 3对应的版本(比如用Spring Boot 3.2.x就配3.2.5,3.1.x就配3.1.10)。

修改后的插件配置示例:

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <!-- 要么继承父POM去掉version,要么指定对应Spring Boot3的版本 -->
  <version>3.2.5</version>
</plugin>

2. 升级Lombok到适配版

把Lombok版本升级到1.18.30及以上,推荐用1.18.32或最新稳定版,这个区间的版本对Jakarta EE的支持更成熟,能完美配合Spring Boot 3的编译环境。修改maven-compiler-plugin里的Lombok版本:

<path>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.32</version>
</path>

3. 升级Maven Compiler插件(可选但推荐)

把maven-compiler-plugin升级到3.12.0或更高版本,新版本对Java 17的注解处理支持更好,能减少编译时的兼容性问题:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.13.0</version>
  <configuration>
    <source>17</source>
    <target>17</target>
    <annotationProcessorPaths>
      <path>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.32</version>
      </path>
    </annotationProcessorPaths>
  </configuration>
</plugin>

4. 清理编译缓存后重试

修改完配置后,先执行mvn clean清空旧的编译产物,然后再跑mvn compile验证编译是否正常,最后再执行mvn dependency:analyze,应该就能解决找不到builder方法的问题了。

为什么这些改动有效

Spring Boot 3彻底切换到了Jakarta EE API替代原来的Java EE,旧版本的Spring Boot插件和Lombok都没有针对这个变化做足够适配,导致注解处理器无法正常生成代码。通过对齐插件版本、升级Lombok,就能让Maven在Jakarta环境下正确识别Lombok的注解,自动生成builder等方法。

备注:内容来源于stack exchange,提问作者Meilan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 03:42:59