欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java自定义Class加载顺序 classloader 

程序员文章站 2022-07-13 17:43:13
...

思路一 :打破双亲加载
1、在Java中默认的Class加载顺序都是父类委托加载,但是有些时候需要自定义加载顺序比如OSGI和ali的Pandora。

2、父类委托加载的基本实现思路,loadClass中在parent中查找class,要是不存在parent则使用findBootstrapClassOrNull调用native方法,要是找不到,使用其中findClass去查找。

3、普通自定义classLoader只是继承loadClass方法,实现findClass做到自定义去加载自己位置或者自己实现的class。但是要想打破父类委托机制去自定义前后顺序去加载class就要完全自己去实现loadClass自己控制加载顺序,比如OSGI bundle之间相互引用的ClassLoader去加载。

思路二、利用双亲加载
1、基本思路就是,自定义classLoader,然后将自定义的classLoader设置为extClassLoader的parent,然后利用双亲加载(除去jdk class)其他的class就会加载自己的class,防止了类冲突的问题。
相关标签: classloader