Java 类的加载器

类的加载器负责将.class 文件加载到内存中,并生成对应的java.lang.class 对象。

  1. Bootstrap ClassLoader: 根类加载器
  2. Extension ClassLoader: 扩展类加载器
  3. System ClassLoader: 系统类加载器

根类加载器不是java.lang.ClassLoader 的子类,而是由JVM自身实现的。

Extension Classloader 扩展类加载器,负责加载JRE的扩展目录(%JAVA_HOME%/jre/lib/ext) 中JAR包的类。

System ClassLoader 被称为系统类加载器,负责在JVM启动时加载来自java 命令的-classpath 选项、java.class.path 系统属性,
或CLASSPATH环境变量所指定的JAR包和类路径。程序可以通过ClassLoader 的静态方法getSystemClassLoader() 获取系统类加载器。
在这里插入图片描述

public class ClasssLoadPropTest {
    public static void main(String[] args) throws IOException {

        ClassLoader systemLoader = ClassLoader.getSystemClassLoader();
        System.out.println(systemLoader);

        Enumeration<URL> eml = systemLoader.getResources("");
        while (eml.hasMoreElements()){
            System.out.println(eml.nextElement());
        }

        ClassLoader extensionLoader = systemLoader.getParent();
        System.out.println(extensionLoader);
        System.out.println(System.getProperty("java.ext.dirs"));
        System.out.println(extensionLoader.getParent());
    }
}

在这里插入图片描述
此处可以看到扩展类加载器的父加载器为null,并不是根类加载器,这是因为根类加载器并不是java实现的。
系统类加载器是AppClassLoader的实例,扩展类加载器是ExtClassLoader的实例。

类加载器加载Class的8个步骤。
在这里插入图片描述
在这里插入图片描述

URLClassLoader 类

URLClassLoader 是系统加载类和扩展类加载器的父类.
下面程序示范如何直接从文件系统中加载MYSQL驱动。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值