本文主要是介绍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 兼容这个”,大概意思是这样。后面的发生的情节我也不得而知了,反正最终导致这两个版本不兼容。
解决方案:
我这里提供两种解决方案,大家如果有更好的解决方案请在留言处告知我,谢谢!
- 将
lombok-1.18.x
版本降低到lombok-1.16.x
版本; - 将 Tomcat 7.0 版本换成 Tomcat 8.0 版本。
这篇关于Tomcat报错之Invalid byte tag in constant pool 19的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!