ClassLoader----类加载器,顾名思义,是用来将类加载到JVM中的一个抽象类,最上层是BootStrap,它没有父类
Java虚拟机支持安装多个类加载器,除了BootStrap外,JAVA还提供了ExtClassLoader,AppClassLoader这样两个ClassLoader
它们各司其职,分别负责不同位置的类的加载:
BootStrap----->JRE/lib/rt.jar
ExtClassLoader-----> JRE/lib/ext/*.jar
AppClassLoader-----> CLASSPATH指定的所有jar或目录
类加载器的显著特点有:
Java中的所有类加载器都具有父子关系
类加载器的委托机制
类加载器加载类的顺序是,先加载当前线程的第一个类A,如果类A中引用了B,java虚拟机将使用加载类A的类装载器来加载类B。
也可以直接调用ClassLoader.loadClass() 方法来指定某个类加载器去加载某个类。注意,每个类加载器加载类时,都要先委托给其上级类加载器。
当所有上级类加载器都没有加载到类,回到发起者类加载器,还加载不了,则抛ClassNotFoundException,而不再去找发起者类加载器的子类。
JAVA支持自定义的类加载器,但是要使用自定义的类加载器,必须要继承某一ClassLoader。