在下面的行中:
这是获取类加载器的两种方法
1)Thread.currentThread()。getContextClassLoader();
2)getClass()。getClassLoader();
有人请解释一下这两者之间的区别。
另外我的第二个问题是我们何时使用Thread.currentThread()。getContextClassLoader()
我已经在StackOverflow上提到了一些相同的帖子,但没有找到根本的答案。
我已经看到了你提出的问题的答案。
Difference between thread's context class loader and normal classloader
线程上下文类加载器为类加载委派方案提供了一个后门。 以JNDI为例:它的内容由rt.jar中的引导类实现(从J2SE 1.3开始),但这些核心JNDI 类可以加载由独立供应商实现的JNDI提供程序 可能部署在应用程序的-classpath中。这种情况 调用父类加载器(在本例中为原始类加载器) 加载一个类子类加载器可见的类(系统一, 例如)。正常的J2SE委派不起作用,解决方法 是使核心JNDI类使用线程上下文加载器,因此 通过类中的类加载器层次结构有效地“隧道化” 与正确授权相反的方向。
因为建议解决方法是制作核心JNDI 类使用线程上下文加载器,我不明白这是如何帮助的 在这种情况下。
我们希望使用parent加载实现供应商类 classloader但它们对父类加载器不可见。怎么可以 我们使用parent加载它们,即使我们设置了这个父类加载器 线程的上下文类加载器。
请建议