一、双亲委派机制
双亲委派机制是JVM中有关类加载器加载过程中应用的一种机制。
在理解这个机制前,我们要先认识类加载器的分类。
类加载器分类(虚拟机自带的加载器):
- 启动类(根)加载器 - BootstrapClassLoader
根加载器负责加载虚拟机的核心类库,如java.lang.*等,根类加载器从属性孙.boot.class.path所指定的目录中加载类,是用c语言编写的。 - 扩展类加载器 - ExtClassLoader
扩展加载器,它的父类时根加载器,它从java.ext.dirs系统属性所指定的目录中加载类库。是用java编写的,继承java.lang.ClassLoader类。 - 应用程序加载器 - AppClassLoader
系统类加载器也称为应用程序加载器,它的父加载器是扩展加载器。它从环境变量classpath或者系统属性java.class.path所指定的目录中加载类,继承java.lang.ClassLoader类。
委派双亲机制
- 类加载器收到类加载的请求
- 将这个请求向上委托给父类加载器去完成,一直向上委托,直到启动类加载器
- 启动加载器检查是否能够加载当前这个类,能加载就结束,使用当前的加载器,否则,抛出异常,通知子加载器进行加载
- 重复上一个步骤
常见的错误
Class Not Found ~
null: java 调用不到C、C++