Java 类加载器加载流程和双亲委派机制

ExtClassLoader 是扩展类加载器,加载-Djava.ext.dirs选项指定的目录,通过代码获取ext的目录如下:

String extDirs = System.getProperty("java.ext.dirs");
for (String path : extDirs.split(";")) {
	System.out.println(path);
}
输出

Java ExtClassLoader 加载器

我们看到ext的路径为

D:\Java\jdk1.8.0_331\jre\lib\ext
C:\Windows\Sun\Java\lib\ext
扩展的jar截图如下:

Java ExtClassLoader 加载器

这里,我们打印 sun.net.spi.nameservice.dns.DNSNameService.class 这个类的加载器看一下

System.out.println("DNSNameService 类加载器:"
                + sun.net.spi.nameservice.dns.DNSNameService.class
                .getClassLoader());
输出

Java ExtClassLoader 加载器

从截图中我们看到DNSNameService.class属于ExtClassLoader 扩展类加载器。