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·数据库·时序数据库·kingbase·数据库平替用金仓·金仓数据库
zlpzpl3 小时前
Java总结进阶之路 (基础二 )
java·开发语言·python
冬夜戏雪3 小时前
线性池java demo
java·开发语言
追随者永远是胜利者3 小时前
(LeetCode-Hot100)5. 最长回文子串
java·算法·leetcode·职场和发展·go
小灵不想卷3 小时前
LangChain4j 多模态
java·langchain4j
wuqingshun3141593 小时前
String、StringBuffer、StringBuilder的应用场景
java·开发语言·jvm
日月云棠3 小时前
JDK 17 特性详解
java
追随者永远是胜利者3 小时前
(LeetCode-Hot100)19. 删除链表的倒数第 N 个结点
java·算法·leetcode·链表·go
树码小子3 小时前
Mybatis(14)Mybatis-Plus入门 & 简单使用
java·mybatis-plus
人道领域3 小时前
Maven配置加载:动态替换的艺术
java·数据库·后端