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处理器无法正常运行。

相关推荐
SimonKing9 小时前
Agnes AI出桌面版了,可图可视频,免费用
java·后端·程序员
CodeSheep9 小时前
有这4个迹象,你就该离职了!
前端·后端·程序员
程序员爱钓鱼9 小时前
Rust 元组 Tuple 详解:组合不同类型的数据
前端·后端·rust
IT_陈寒9 小时前
React的useEffect为什么经常执行两次?
前端·人工智能·后端
看-是灰机9 小时前
使用go语言实现对接
linux·开发语言·后端·docker·语言模型·golang·飞书
FF2501_940228589 小时前
HarmonyOS应用开发实战:小事记 - @Component 组件化设计:从 BottomTabBar 分析组件拆分与 @Prop 传参
后端
AINative软件工程10 小时前
LLM 应用的回滚工程实践:Prompt、模型与配置变更出问题时如何快速恢复
后端·llm·ai编程
o52788318410 小时前
校园一体化管理系统2.1、基于整洁四层架构 + DDD+CQRS 项目目录解读
后端·架构·c#·asp.net·visual studio
卷无止境10 小时前
Python 脚本工程化:从"能跑就行"到"生产级代码"
后端·python