出现 org.apache.tomcat.xxx.ClassFormatException: Invalid byte tag in constant pool: 15 异常的原因及解决方法
1 异常描述
最近,当我从 SVN 检出项目并正常配置完 Tomcat 之后,启动项目,总是报出如下异常:
2 异常原因
通过观察上述标记出来的异常描述,我们可以知道:
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15
此异常,为:类格式异常:常量池中无效的字节标记:15.
在网上搜索过后,发现遇到这个问题的同学并不少,解决的方法也不尽相同,而且解决问题的方法并不通用,例如 A 和 B 两位同学都遇到了上述的异常,但 A 解决此问题的方法并不一定适用于 B 同学。
想了想,这也正常,从异常的表现层面来看,异常都是相同的,但引起异常的实际原因却不一定相同,例如对于java.lang.UnsupportedClassVersionError
这个异常,我们知道可能是由于 JDK 版本不兼容引起的,但实际上也可能是 Maven 版本和 JDK 版本不兼容(前提是 Maven 项目)引起的。
3 解决方法
- 方法 1:升级 Tomcat 版本到 8 以上
网上很多同学说,此异常为 Tomcat 7 及以下版本的 bug,因此升级到 Tomcat 8 及以上版本之后,此异常就解决啦!对于这种方法,我并没有尝试,之所以在此列出来,仅想作为一个解决异常的可能方法,供大家选择,待验证。
- 方法 2:修改 Tomcat 的
web.xml
,添加metadata-complete="true"
到web-app
头
对于上述异常,无论是在百度搜索还是通过 Stack Overflow 检索,很多同学都发言称验证了 方法 2 的可行性。我也尝试通过 方法2 来解决此异常,具体方法为:进入 Tomcat 的conf
目录,修改web.xml
的web-app
头,内容为
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" metadata-complete="true">
正常情况下,截止到此步骤,上述异常应该就可以解决啦!
But,实际上,当我的 JDK 版本为 1.8 的时候,此异常并没有解决。不过当我将 JDK 切换为 1.6 的时候,此异常解决了。但却报出如下错误,
对于上图所示的错误,我们可以参考「出现 java.lang.UnsupportedClassVersionError 错误的原因及解决方法」这篇文章进行解决。不过让我纠结的是,正常情况下,报出这个错误,程序一般都会挂掉了,但我遇到的情况确是:此错误被忽略,项目启动成功了,囧。
就如我前文所言,对于同一个异常或错误,其产生的原因并不一定相同,因此解决方法也不一定相同。此文是为了给大家解决此类问题提供一个参考,仅做抛砖引玉之用,如果大家有其他的解决方法,欢迎在此分享。
温馨提示:对于上述的异常,我曾经也遇到过,但解决的方法却和此文的两种方法都不相同,具体可以参考「出现 org.apache.tomcat.util.bcel.classfile.ClassFormatException 异常的原因及解决方法」.
出现 org.apache.tomcat.xxx.ClassFormatException: Invalid byte tag in constant pool: 15 异常的原因及解决方法相关推荐
- Tomcat报ClassFormatException: Invalid byte tag in constant pool: 19解决方法
[现象] 严重: Unable to process Jar entry [module-info.class] from Jar [jar:file:/D:/work/demo/target/ROO ...
- org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
启动项目: 问题描述 严重: Unable to process Jar entry [module-info.class] from Jar [jar:file:/D:/.m2/myboot/org ...
- org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 60
今天发现一个很奇怪的问题:org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constan ...
- Invalid byte tag in constant pool: 18
网上有这个问题得解答,但是解决起来还是很麻烦 aspectj: Invalid byte tag in constant pool: 18 - 知乎 我来说是我得实践 首先这个问题在本地运行一直没问题 ...
- JDK8: Invalid byte tag in constant pool: 18
JDK8: Invalid byte tag in constant pool: 18 问题 org.aspectj.apache.bcel.classfile.ClassFormatExceptio ...
- 关于初学者Invalid byte tag in constant pool: 19错误
关于初学者Invalid byte tag in constant pool: 19错误 求大神解决
- ClassFormatException:Invalid byte tag in constant pool: 18
使用@Aspectj 时遇到的问题 Caused by: org.aspectj.apache.bcel.classfile.ClassFormatException: File: 'com.ls.s ...
- Invalid byte tag in constant pool 19
Invalid byte tag in constant pool 19 问题发生时: 原tomcat版本为8.0 解决方式: 升级tomcat版本为8.5 若原tomcat版本是8.0或者8.0以下 ...
- Invalid byte tag in constant pool: 19
问题 tomcat启动时报错 Invalid byte tag in constant pool: 19 解决办法 办法一:请检查报错提示的jar包路径,删除该jar包对应的文件夹,重新执行打包即可. ...
最新文章
- train_test_split()用法
- 祝博客园里的所有朋友 新年快乐!
- 伪元素写竖线_用伪元素画出太极图
- 蛙泳如何找准背部发力的感觉
- C++编译预处理:宏定义指令、文件包含指令和条件编译指令
- python画菱形的代码_Python打印“菱形”星号代码方法
- Json、Gson、Jackson
- 在linux下的vsftp的使用
- 推荐一个完全免费的高质量素材网站
- 如何在Cell里画出虚线?
- zz淘宝笑到喷的评价
- C#操作word定位光标
- win10系统更新服务器太慢了,Win10升级更新速度慢的解决方法
- 在蓝图中设置人物动作 教程
- r语言中残差与回归值的残差图_R语言基础-数据分析及常见数据分析方法
- 电影与幸福感期末答案和平时测试答案
- Thonny+Micropython ESP32固件下载后显示没有反应
- 疫情期间中国互联网公司亏损排行榜
- 趣味数学:解24点游戏小技巧
- 本科计算机专业写论文写什么,本科计算机专业论文大纲格式 本科计算机专业论文框架如何写...