Tomcat报错之Invalid byte tag in constant pool 19

版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
本文网址:https://blog.csdn.net/sun8112133/article/details/106765398


今天在做 SSH 整合的时候,在启动 Tomcat 时报错,经过查阅相关资料,终于把它解决了,顺便来个总结吧。。。。


报错提示:

org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19

异常


大概意思是:

常量池中的无效字节标记:19


问题信息收集:

单纯看报错意思无法得知为什么会报这样的错误以及如何去解决这个问题。我查阅了相关资料,并请教各路大神最终将问题定位到了 Lombok 身上。

我在 SSH 整合的时候,为了方便开发,使用了 Lombok 这个小工具(大家可以参考:Lombok初体验),恰恰 这个错误就是由于 Lombok 导致的。我这里使用的是 lombok-1.18.8.jar 这个版本,而所用的服务器是 Tomcat 7.0,但我忽略了这两个版本的兼容问题。

网上好像有人给 Lombok 提了 bug, 意思是 Tomcat 8.0 环境启动读取 module-info.class 报错,然后一个作者回复:“我们加了 Java9 的 module-info 是有原因的, 应该换 Tomcat 版本或者给 Tomcat 提 bug 兼容这个”,大概意思是这样。后面的发生的情节我也不得而知了,反正最终导致这两个版本不兼容。


解决方案:

我这里提供两种解决方案,大家如果有更好的解决方案请在留言处告知我,谢谢!

  1. lombok-1.18.x 版本降低到 lombok-1.16.x 版本;
  2. 将 Tomcat 7.0 版本换成 Tomcat 8.0 版本。



猜你喜欢

转载自blog.csdn.net/sun8112133/article/details/106765398