一、类加载器的作用
- 类加载器(ClassLoad)用来加载Java类到Java虚拟机中(JVM)
- 系统默认三个主要的类加载器,每个负责加载特定位置的类
- BootStrap----加载JDK目录下jre/lib/rt.jar,不是类(父亲),Java虚拟机运行时先加载这个
- ExtClassLoader----加载JDK目录下jre/lib/ext/*.jar,是一个类(儿子)
- AppClassLoader----加载CLASSPATH指定的所有jar或目录(孙子)
- MyClassLoader----用户可以自行编写加载类,可多个,加载指定目录/名称的类
二、类加载器的委托机制
当Java虚拟机要加载类时,如果上一级加载器可以加载则交由上一级加载,如用户编写一个java.lang.System类,交给AppClassLoader加载--->ExtClassLoader加载--->BootStrap加载,而rt.jar这个包中本来就有一个System类,所以用户编写的System类不起作用。如果BootStrap加载不到,则将由ExtClassLoader加载--->AppClassLoader加载,最后还加载不了的话就返回ClassNotFoundException异常