Java基础之《加载器对同名不同版本jar包加载的选择》

一、假设lib目录下有如下几个包
httpcore-4.0.1.jar
httpcore-4.3.2.jar
httpcore-nio-4.0.1.jar
httpcore-4.4.5.jar

二、类加载的几种情况
在同一类加载器内,按照先后顺序加载,以第一个找到的类作为被加载类
情况1:
类只在httpcore-4.4.5中有,加载无影响,只有httpcore-4.4.5.jar包中才能找到。
例如:
import org.apache.http.ssl.SSLContextBuilder;
import org.apache.http.ssl.TrustStrategy;

情况2:
类在httpcore-4.3.2和httpcore-4.4.5中都有,但是4.4.5版本有新的构造方法,程序引用了新的构造方法,那么如果先加载了httpcore-4.3.2中的类,程序会有红叉叉出现。

情况3:
类在httpcore-4.3.2和httpcore-4.4.5中都有,构造方法一致,但是httpcore-4.4.5中有新的逻辑处理,那么如果先加载了httpcore-4.3.2中的类,程序运行时会报错。

三、不同容器加载包的方式
weblogic中同名不同版本的包是如何加载的?

按顺序加载,先找到的作为被加载类,有不确定性,每次重启加载到的包会不同?比如第一次启动加载到httpcore-4.3.2中的类,第二次启动加载到httpcore-4.4.5中的类

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值