一 点睛
ClassLoader 类,它是一个抽象类,其他所有的类加载器都继承自ClassLoader(不包括启动类加载器)。
sun.misc.Launcher 它是一个java虚拟机的入口应用
二 获取ClassLoader的途径
- 获取当前类的ClassLoader:clazz.getClassLoader()
- 获取当前线程上下文的ClassLoader:Thread.currentThread().getContextClassLoader()
- 获取系统的ClassLoader:ClassLoader.getSystemClassLoader()
- 获取调用者的ClassLoader:DriverManager.getCallerClassLoader()
三 实战
1 代码
public class ClassLoaderTest2 {
public static void main(String[] args) {
try {
// 获取当前类的ClassLoader
ClassLoader classLoader = Class.forName("java.lang.String").getClassLoader();
System.out.println(classLoader);
// 获取当前线程上下文的ClassLoader
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
System.out.println(contextClassLoader);
// 获取系统的ClassLoader
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader().getParent();
System.out.println(systemClassLoader);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
2 测试
null
sun.misc.Launcher$AppClassLoader@18b4aac2
sun.misc.Launcher$ExtClassLoader@1be6f5c3