Java打包操作编译报错

如图中显示找不到符号: 变量 log

而当我们定位到报错的源码位置时可以看到是@Slf4j注解生成的log变量报错了,这也就说明Lombok注解处理器没有工作。从而导致编译报错。 导致Lombok注解处理器没有工作的情况主要有以下几种:

  1. Maven编译插件缺少annotationProcessorPaths配置
  2. 版本兼容性问题
  3. 依赖范围问题
  4. 多模块项目依赖问题
  5. 编译器插件冲突

1.Maven编译插件缺少annotationProcessorPaths配置

这是最常见的原因。在Maven项目中,如果没有在maven-compiler-plugin中明确配置Lombok注解处理器路径,编译器就无法知道要使用Lombok处理器。

1.启用注解处理:

File → Settings → Build, Execution, Deployment → Compiler → Annotation Processors → 勾选 Enable annotation processing

勾选 Obtain processors from project classpath(关键选项)

2.在 pom.xml 中添加 maven-compiler-plugin 配置:
xml 复制代码
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source>11</source>
        <target>11</target>
        <annotationProcessorPaths>
            <path>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.42</version>
            </path>
        </annotationProcessorPaths>
    </configuration>
</plugin>

2.版本兼容性问题

核心版本对应表

  • JDK 6 :推荐使用 Lombok 1.16.x 或更早版本(官方已停止支持)。
  • JDK 7 :推荐使用 Lombok 1.18.2 或更早版本。
  • JDK 8 :全版本兼容(1.16.0+),推荐 1.18.20+
  • JDK 9 ~ 10 :需要 Lombok 1.18.12+(实验性支持)。
  • JDK 11 :需要 Lombok 1.18.16+(推荐 1.18.32+)。
  • JDK 12 ~ 15 :需要 Lombok 1.18.18+
  • JDK 16 :需要 Lombok 1.18.20+(支持密封类预览特性)。
  • JDK 17 :需要 Lombok 1.18.22+(推荐 1.18.36+)。
  • JDK 18 ~ 20 :需要 Lombok 1.18.24+
  • JDK 21 :强制要求 Lombok ≥1.18.30(推荐 1.18.38+)。
  • JDK 22 :需要 Lombok 1.18.34+

3.依赖范围问题

如果Lombok依赖被错误地设置为providedruntime 范围,而不是compile范围,也可能导致注解处理器无法正常工作。

xml 复制代码
<dependency>  
    <groupId>org.projectlombok</groupId>  
    <artifactId>lombok</artifactId>  
    <version>1.18.42</version>  
</dependency>

如果不设置范围默认值是compile ,依赖的范围从大到小依旧是compile>provided>runtime>test>system

4. 多模块项目依赖问题

在多模块项目中,如果父POM没有正确配置注解处理器,子模块即使引入了Lombok依赖也无法正常工作。

5. 编译器插件冲突

如果有其他注解处理器与Lombok冲突,可能会导致Lombok处理器无法正常运行。

相关推荐
LucianaiB2 小时前
毕业老学长给我留的最后一句话是:“AI 写的,别挂我名。” 我直接 神(Seed Evolving) 来!助我!
后端
IvanCodes2 小时前
RAG 实战教程(一):RAG 工作原理与完整流程——分片、索引、召回、重排和生成
人工智能·后端·agent
CodeSheep3 小时前
稚晖君公司人事大变动,来了!
前端·后端·程序员
小满zs3 小时前
Go语言第八章(函数)
后端·go
stark张宇4 小时前
实战Go高级特性:Context超时控制、defer资源回收与Channel通信的关键避坑点
后端·go
凤山老林6 小时前
Spring Boot @Async 线上实战:从默认配置到生产级线程池治理
java·spring boot·后端
IT_陈寒6 小时前
Vue的响应式让我原地破防,原来问题出在这
前端·人工智能·后端
思考着亮7 小时前
1.RabbitMQ基本使用
后端
XuCoder7 小时前
面试官:Redis 单线程为什么还这么快?这道题答错的人真不少
后端
子兮曰7 小时前
Bun vs Node.js 深度对决:跑分快 4 倍,真实业务只剩 3%,2026 年到底该怎么选?
前端·后端·typescript