Maven之高版本的 lombok 和 tomcat 7 插件冲突问题

高版本的 lombok 和 tomcat 7 插件冲突问题

在开发期间,当我们使用 tomcat7-maven-plugin 来作为运行环境运行我们项目使,如果我们项目中使用了 1.16.20 及以上版本的 lombok 包,项目启动时会报错:

text 复制代码
for annotations org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19

原因在于,从 1.16.20 开始 lombok 包中有了一个叫 module-info.class 的文件,而低版本的 tomcat 不能识别这个文件,从而导致运行时出错。

其实这个问题对于我们而言不是问题,因为项目部署时,肯定不会部署到 tomcat 7 上,至少是 tomcat 8.5 。

对于这个问题,解决办法有 3 个:

  • 办法 1:使用 tomcat8-maven-plugin ,代替 tomcat7 ;

  • 办法 2:使用低版本的 lombok,例如,1.14.x 的最高版本 1.14.8

  • 办法 3:将 lombok 的 <scope> 设置为 provided,这样,maven 在打包时就不会将 lombok 包含在 jar/war 包内。我们对 lombok 的使用也就是在编译时使用,运行时不需要它。

相关推荐
葡萄城技术团队2 分钟前
在 Java 中优化 MySQL 查询以提升性能
java·开发语言·mysql
杀死那个蝈坦6 分钟前
短链接生成-基于布隆过滤器和唯一索引
java·数据库·微服务·oracle·rocketmq
慕白Lee6 分钟前
Java foreach在lambda的foreach遍历中退出操作(lambda foreach break)
java
winfield8219 分钟前
Java 中大量闲置 MySQL 连接的解决方案(从根因到落地)
java·mysql
moxiaoran575312 分钟前
Java开发中VO的使用
java·开发语言
计算机毕设指导612 分钟前
基于微信小程序图像识别的智能垃圾分类系统【源码文末联系】
java·spring boot·mysql·微信小程序·小程序·分类·maven
LJianK118 分钟前
前后端接口常见传参
java·spring
独自破碎E20 分钟前
消息队列如何保证消息的有效性?
java·开发语言·rocketmq·java-rocketmq
38242782721 分钟前
使用 webdriver-manager配置geckodriver
java·开发语言·数据库·爬虫·python
骚戴28 分钟前
2025企业级架构演进:重构 Java/Python 的 RAG 与 Agent 系统的六种核心策略
java·人工智能·大模型·llm·api