类加载器的查找类过程就像下。 找到缓存的一个:孩子第一
如果不存在则
加载类:父级第一。
我想从子classLoader到父类加载器找到缓存的类。 loadClass方向也是父对象。
我的希望
找到缓存的一个:孩子第一个
如果不存在则
加载类:孩子第一
有什么好方法吗?
在示例情况下。
有两个classLoader。
ClassLoader A有一个类Same.class,它位于Version1.jar
中ClassLoader B有一个类Same.class,它位于Version2.jar
中ClassLoader A是ClassLoader B的父级。
在classLoader A上加载Same.class(在Version1.jar中),然后传递给classLoader B.
classLoader B找到类Same.class。这个过程是 首先找到从孩子到父母的缓存。 然后从父级加载类到子级。
所以,在classLoader A上找到了Same.class,因为它被缓存了classLoader A. 没问题。
我的问题如下。 起初,Same.class没有从classLoader A加载。 和classLoader B请求加载Same.class。 此时Same.class加载了classLoader A,因为Same.class之前没有缓存,而且load class是parent。我希望classLoader B加载Version2.jar中的Same.class。