tomcat7 与 tomcat8 加载 jar包的顺序
2023-04-18 13:05:23 时间
本文为博主原创,转载请注明出处:
最近在进行服务的环境升级,将 服务的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>
相关文章
- Jease 2.6发布 Java开源内容框架
- JVM调优总结:反思
- JVM调优总结:调优方法
- JVM调优总结:新一代的垃圾回收算法
- JVM调优总结:典型配置举例
- JVM调优总结:分代垃圾回收详述
- JVM调优总结:垃圾回收面临的问题
- JVM调优总结:基本垃圾回收算法
- JVM调优总结:一些概念
- 用Java GUI编写的画板程序
- Java的动态绑定机制
- jOOQ 2.0.2发布 Java的ORM框架
- Java中带复选框的树的实现和应用
- Java网络编程菜鸟进阶:TCP和套接字入门
- 甲骨文与谷歌专利权之争定于今年三月开审
- Java调用C/C++编写的第三方dll动态链接库
- 集成开发环境 NetBeans IDE 7.1正式版发布
- kangle 2.7.5紧急发布 防hash碰撞攻击
- 东方通技术引领模式为国产软件“争权”
- UML中关联,组合与聚合等关系的辨析