在学习线程上下文类加载器的时候,经常看到网上的博文说父类加载器加载的类不能访问子类加载器加载的类,因此需要线程上下文类加载器。想请问该怎么理解这句话呢?
在学习线程上下文类加载器的时候,经常看到网上的博文说父类加载器加载的类不能访问子类加载器加载的类,因此需要线程上下文类加载器。想请问该怎么理解这句话呢?
自我感觉,这么说有点绝对,只能说父类加载器想要使用 还未加载的 非JAVA_HOME/lib下的 类 是无法使用的。如果在项目加载过程中代码比如使用class.forname(.)加载了该类,那么父类是可以直接使用的。
当使用Bootstrap加载器加载一个对象并使用时,该对象内部要使用在classpath下(需要Application加载器加载)还未加载的一个类对象,但是根据双亲加载机制boostrap尝试加载该类因为其自身为最高层加载器所以只能有boostrap加载器加载,所以是无法加载不到该类的,也就无法使用该类,可以说父类是没有办法使用子类加载器加载的对象的。
这时候就需要contextClassloader了
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
自己写的类加载器,重写loadClass就行了