类加载器子系统的类加载机制(双亲委派机制)

来源:互联网 发布:usb002虚拟打印机端口 编辑:程序博客网 时间:2024/05/21 10:07

类加载器子系统中默认有3中类加载器(应用类加载器,启动类加载器,扩展类加载器),且类加载器加载一个类需要遵循双亲委派机制,如下图:


当应用类加载器加载一个类时不会马上加载,而是先委派自己的父亲扩展类加载器加载,而扩展类加载器加载也不会马上加载而是委派父亲启动类加载器加载这个类,如果启动类加载器在自己的加载路径下没有找到这个类,那么会抛出异常给扩展类加载器,然后扩展类加载器在自己的加载路径下找这个类,找到就加载找不到就把异常抛给应用类加载器,如果应用类加载器加载器也找不到就会把异常抛给JVM虚拟机,这个异常就是java.lang.ClassNotFoundException(类找不到异常)

注意:我们自己写的类一般在classpath下面,所以说我们也写一个java.lang.String类的话不会那么类加载子系统,因为启动类加载器会在会在自己的路径下找到一个名字为java.lang.String的类,但是如果我们写的这个类也放在启动类加载器的类加载路径下,就会报错了

原创粉丝点击