记录一次tomcat问题排查记录:org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
2024-10-11 23:26:49
最近项目升级jdk,从jdk7 升级到 jdk8,本地已经自测完成了,需要部署到测试环境,测试环境已经装好 jdk8 了,但是tomcat 的版本还是 7。不过,据我之前了解,tomcat7是可以运行JDK8编译的web工程的,只要tomcat的运行环境的JDK是1.8即可。但是不能有比JDK1.8还要新的特性。所以最终决定不升级 tomcat 版本。
等我把项目部署到 测试环境 tomcat 下后,项目是可以跑起来的且能正常运行,但是在项目启动过程中,报了一堆错:
SEVERE: Unable to process Jar entry [module-info.class] from Jar [jar:file:/home/.......(中间省略)....../WEB-INF/lib/jakarta.ws.rs-api-2.1.5.jar!/] for annotations
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:136)
at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:59)
at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:208)
at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:118)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2055)
at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1931)
at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1897)
at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1882)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1314)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:873)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:371)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5355)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
报错的不仅这一条,有很多条,分别对应不同的jar包。
我在网上苦寻解决方案,找到和实践过的方案包括下面几个:
修改web.xml 加 metadata-complete="true": https://www.cnblogs.com/ning-blogs/p/4480438.html
升级aspectjweaver的依赖: https://blog.csdn.net/guoshengkai373/article/details/53404830
升级单个jar: https://www.cnblogs.com/wxylog/p/9721332.html
这些方案,对应解决我的问题都不行,我一度产生了升级 tomcat 版本的想法,但最终我还是找到了解决方案。
参考:https://blog.csdn.net/JackRen_Developer/article/details/82288488
最终解决方案是: 修改 tomcat\conf\catalina.properties,tomcat.util.scan.DefaultJarScanner.jarsToSkip 节点增加 相应 的 jar,然后重启tomcat。
就这样,没有升级tomcat版本,问题解决。
最新文章
- Oracle入门基础
- OOCSS的概念和思路
- SharedPreferences 详解(多进程,存取数组解决方案)
- EWS API 2.0读取日历信息-读取内容注意事项
- Stooge排序与Bogo排序算法
- Ruby--Array
- [LeetCode] Decode Ways(DP)
- python字典和列表使用的要点
- Creating Timer in Oracle D2k / Forms 6i and Displaying a Clock
- LintCode-Serialization and Deserialization Of Binary Tree
- 学习C++ Primer 的个人理解(六)
- 使用cvs或svn从sourceforge上获取开源项目的方法[转载]
- 【转】vim 修改tab为四个空格
- nyoj 623
- poj 1466 Girls and Boys(二分匹配之最大独立集)
- cocos2d-x 3.0 使用Sax解析xml文件(中国显示器问题解决)
- 将对象转成 json 以及 将字符串 hash(SHA1) 加密
- Centos7 安装pyquery 等包的简易方法
- Spark学习笔记——Spark上数据的获取、处理和准备
- DIV垂直居中对齐