获取Java的三种类加载器
也还在学习 水平有限 如有不足请大佬指正
首先是获取一个系统类加载器SystemClassLoader
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
然后在用这个系统类加载器去获取他的父级类加载器:扩展类加载器
ClassLoader parent = systemClassLoader.getParent();
获取到类扩展类加载器后再通过同样的方法获取其父级类加载器也就是引导类加载器
ClassLoader parent1 = parent.getParent();
当然因为引导类加载器通常是C/C++编写的 Java获取不到
所以通常得到的是个Null
最后全部的代码如下:
package test12;
public class Test {
public static void main(String[] args) {
//获取系统加载器
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
System.out.println(systemClassLoader);
//获取系统加载器的父级加载器:扩展类加载器
ClassLoader parent = systemClassLoader.getParent();
System.out.println(parent);
//获取扩展类加载器的父级加载器:引导类加载器
ClassLoader parent1 = parent.getParent();
System.out.println(parent1);
//引导类加载器因为通常是C/C++编写的 Java获取不到 所以这里打印的是一个null
//获取当前类的加载器
try {
ClassLoader classLoader = Class.forName("test12.Test").getClassLoader();
System.out.println(classLoader);
//因为这里是用包名+类名 所以可能会找不到这个类而导致出现classnotfound错误 所以try/catch捕获一下异常
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}