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

相关推荐
步行cgn8 小时前
Spring c 命名空间注入详解
java·后端·spring
明月_清风8 小时前
Maven 到底是什么?一篇文章搞懂 Java 项目构建与依赖管理
java·后端·maven
明月_清风9 小时前
AI 越来越强,程序员真正的价值到底是什么?
人工智能·后端
aramae9 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
Rain的Java大神之路9 小时前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
码事漫谈10 小时前
别再跟AI说“请”了,它根本不 care——但有个东西它超在意
后端
郑州光合科技余经理12 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
IT_陈寒13 小时前
Vue的响应式让我熬到凌晨三点,原来漏了这个小细节
前端·人工智能·后端
颜进强13 小时前
01 · NestJS 是什么:用途、解决什么问题、与热门框架对比
前端·后端·ai编程
isfox13 小时前
MapReduce Shuffle 深度解析:数据从 Map 到 Reduce 的完整旅程
后端