最近项目升级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版本,问题解决。

最新文章

  1. Oracle入门基础
  2. OOCSS的概念和思路
  3. SharedPreferences 详解(多进程,存取数组解决方案)
  4. EWS API 2.0读取日历信息-读取内容注意事项
  5. Stooge排序与Bogo排序算法
  6. Ruby--Array
  7. [LeetCode] Decode Ways(DP)
  8. python字典和列表使用的要点
  9. Creating Timer in Oracle D2k / Forms 6i and Displaying a Clock
  10. LintCode-Serialization and Deserialization Of Binary Tree
  11. 学习C++ Primer 的个人理解(六)
  12. 使用cvs或svn从sourceforge上获取开源项目的方法[转载]
  13. 【转】vim 修改tab为四个空格
  14. nyoj 623
  15. poj 1466 Girls and Boys(二分匹配之最大独立集)
  16. cocos2d-x 3.0 使用Sax解析xml文件(中国显示器问题解决)
  17. 将对象转成 json 以及 将字符串 hash(SHA1) 加密
  18. Centos7 安装pyquery 等包的简易方法
  19. Spark学习笔记——Spark上数据的获取、处理和准备
  20. DIV垂直居中对齐

热门文章

  1. 【Flutter 面试】main入口函数会被调用几次
  2. Java基础之字面值
  3. Moment.js常见用法总结
  4. 新版本 swagger 组件中 Servers 的 坑
  5. 嵌入式以太网模块的TCP Client模式说明
  6. Java学习的第五十一天
  7. nodejs中连接mongodb数据库
  8. Spring Cloud Alibaba 之 版本选择
  9. 3.2spring源码系列----循环依赖源码分析
  10. 深入Python中的正则表达式