1、在类加载器收到类加载请求的时候,先去通过父类加载执行
2、如果父类的加载器还存在父类,则在向上委派,直到启动类加载器(BootstrapClassLoader)
3、如果父类可以执行该类的加载,则加载完成并返回
4、如果父类无法加载执行,则其子类会去尝试加载执行,异常类推下去
java类加载器的层级关系:
启动类加载器(bootstrap classloader), 加载java的核心类库,例如java安装目录下的/jar/librt.jar | resources.jar 、 sum.boot.class.path下的内容,且只加载 java javax sum 开头的类
扩展类加载器(jvm中自带)(Extension Classloader), 加载java.ext.dirs指定目录、jar/lib/ext子目录, 派生类ClassLoader类
应用程序加载类AppClassLoader(默认的类加载器),加载类路径下的或系统属性java.class.path所指定的类、库,也派生ClassLoader类