类加载器之间的父子关系以及管辖范围(类加载器采用委托机制)
1、得到和修改普通类的加载器
CLASSPATH指定的所有jar或目录采用AppClassLoader加载器加载
package com.xiaozhi.loader;
public class LoaderTest {
public static void main(String[] args) {
System.out.println(LoaderTest.class.getClassLoader().getClass().getName());
}
}
将这个类打包成jar文件导出到jdk/jre/lib/ext目录下
运行结果变为
______________________________________________________________________________________________________
2、获取所有加载器
运行程序,这是因为第一个类加载器是BootStrap是C++代码写的,用java代码获取不到他的名字。
package com.xiaozhi.loader;
public class LoaderTest {
public static void main(String[] args) {
System.out.println(System.class.getClassLoader().getClass().getName());
}
}
package com.xiaozhi.loader;
public class LoaderTest {
public static void main(String[] args) {
ClassLoader loader=LoaderTest.class.getClassLoader();
while(loader!=null){
System.out.println(loader.getClass().getName());
loader=loader.getParent();
}
}
}