扩展类加载器(启动类加载器,Extension ClassLoader)
Java语⾔编写,由sun.misc.Launcher$ExtClassLoader实现。
派⽣于ClassLoader类
⽗类加载器为引导类加载器
从java.ext.dirs系统属性所指定的⽬录中加载类库,或从JDK的安装⽬录的jre/lib/ext⼦⽬录(扩展⽬录)下
加载类库。如果⽤户创建的JAR放在此⽬录下,也会⾃动由扩展类加载器加载.
应⽤程序类加载器(系统类加载器,Application ClassLoader)
java语⾔编写,由sun.misc.Launcher$AppClassLoader实现
派⽣于ClassLoader类
⽗类加载器为扩展类加载器
它负责加载环境变量classpath或系统属性java.class.path指定路径下的类库
该类加载是程序中默认的类加载器,⼀般来说,Java应⽤的类都是由它来完成加载
获取加载器加载内容⽅法如下
⾃定义类加载器
为什么要⾃定义类加载器?
隔离加载类
修改类加载的⽅式
扩展加载源
防⽌源码泄漏
JAVA_HOME/jre/lib/resources.jar
JAVA_HOME/jre/lib/rt.jar
JAVA_HOME/jre/lib/sunrsasign.jar
JAVA_HOME/jre/lib/jsse.jar
JAVA_HOME/jre/lib/jce.jar
JAVA_HOME/jre/lib/charsets.jar
JAVA_HOME/jre/lib/jfr.jar
JAVA_HOME/jre/classes
// 获取引导类加载器加载url
URL[] bootUrls = sun.misc.Launcher.getBootstrapClassPath().getURLs();
// 获取扩展类加载器加载url
URL[] extUrls = ((URLClassLoader)
ClassLoader.getSystemClassLoader().getParent()).getURLs();
// 获取系统类加载器加载url
URL[] systemUrls = ((URLClassLoader) ClassLoader.getSystemClassLoader()).getURLs();
评论0
最新资源