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

相关推荐
IT_陈寒2 小时前
用了Proxy才发现以前的JavaScript白写了
前端·人工智能·后端
唐青枫2 小时前
别把 ArrayList 当成会自动管理内存的 List:Zig 动态数组从入门到实战
后端
鸿蒙开发2 小时前
我为 HarmonyOS 做了一个统一大模型 SDK:@hmkit/ai 正式开源
后端
猪是念来过倒3 小时前
Semaphore 与 RateLimiter:并发控制双雄详解
后端
掘金者阿豪3 小时前
异构数据同步最怕什么?不是同步慢,而是数据对不上
后端
程序员cxuan4 小时前
Claude 官方的学习教程,太强了。
人工智能·后端·程序员
老孙讲技术4 小时前
把工地遮挡和掉线接进项目部:setMessageCallback 订 alarm 与 deviceStatus
后端·物联网·音视频开发
老孙讲技术4 小时前
关店后有人进门,监控值班群却没响:用 setMessageCallback 订 human,再用 aiHuman 打开人形
后端·物联网·音视频开发
LEE4 小时前
原来 Claude Code 最厉害的工具,一行代码都不写
前端·后端
老孙讲技术4 小时前
把园区几百路摄像头收进值班台账:bindDevice 入账与 listDeviceDetailsByPage 翻页
后端·物联网·音视频开发