tomcat7 与 tomcat8 加载 jar包的顺序
2024-09-18 16:59:46
本文为博主原创,转载请注明出处:
最近在进行服务的环境升级,将 服务的tomcat7升级到 tomcat8;当把 tomcat 升级到 tomcat8 的时候,进行服务启动异常,报 jar 包冲突的 异常,但是尝试几次之后,偶尔也有成功的概率,便推测 是 jar 包加载的顺序不对,因为 当相同路径的类或资源在加载之后,便不会进行再加载,由于项目中有两个相同的全限定名的类,在服务启动的时候,加载错误的类的时候,便报jar包冲突。
于是便设置 classpath,但发现设置 classpath 也没有生效,通过查看资料以及阅读 tomcat 的源码,发现 tomcat7 与 tomcat8 的类加载逻辑是不一样的,tomcat 7 在加载jar包 路径下的资源后,会对 所有的 jar包根据 字母顺序进行排序,字母在前面的 jar 包会优先加载,
tomcat7加载 jar包顺序
主要代码如下:
list是获得了应用中WEB-INF下lib下所有jar包的路径。我们跟踪进去发现`FileDirContext` 的list方法中有下面这一句:
tomcat8加载
主要的代码:
进一步继续,直接file.list获取过滤jar,并没有排序
tomcat8 设置优先加载顺序
code如下:
<Resources>
<PreResources base="d://webapps/ROOT/WEB-INF/lib/sms.reyo.cn.jar"
className="org.apache.catalina.webresources.JarResourceSet"
webAppMount="/WEB-INF/classes"/>
</Resources>
最新文章
- JavaScript学习笔记4之 ByClass&;json
- webstorm编辑RN代码提示功能
- 点我吧工作总结(技术篇) Velocity
- ASP.NET Web API 简介
- Python的平凡之路(6)
- Jsoup的demao
- Redhat 6.3中syslog信息丢失
- JQueryEasyUI学习简单Demo
- Linux 容器 vs 虚拟机 —— 谁更胜一筹
- 【Visual C++】游戏编程学习笔记之九:回合制游戏demo(剑侠客VS巡游天神)
- c/c++柔性数组成员
- ansible jenkins war
- How to SHA1 on macOS
- 《JavaScript Dom 编程艺术》读书笔记-第7章
- Luogu P1962 斐波那契数列(矩阵乘法模板)
- 记录一次优化mysql查询语句的方法
- Shell脚本:向磁盘中批量写入数据
- opencv-python 学习初探1
- 【Java面试题】42 TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常!
- 理解Javascript的Event Loop