zoukankan      html  css  js  c++  java
  • AppClassLoader

    疑问

    为何 继承ClassLoader的自定义类加载器默认会调用super()传入默认的AppClassLoader作为parent?

    带着这个疑问 , 查看了下URLClassLoader的源码

    根据URLClassLoader继承了ClassLoader,

    URLClassLoader

    类加载器的实例隔离Class对象中MyClassLoader隐式的调用了super()
    在这里插入图片描述

    在这里插入图片描述
    ClassLoader.getSystemClassLoader()获取系统默认
    ClassLoader

    Launcher 去获取 ClassLoader
    在这里插入图片描述
    返回的this.loader
    在这里插入图片描述
    this.loader在初始化Launcher的时候去初始化

    注入ExtClassLoader作为AppClassLoader的parent 并返回该AppClassLoader。
    由此已经解决了疑问 【为何 继承ClassLoader的自定义类加载器默认会调用super()传入默认的AppClassLoader作为parent?】
    在这里插入图片描述

    AppClassLoader的类加载目录

    顺便了解了一下系统类加载器 App ClassLoader中提到AppClassLoader加载的 -cp/-classpath 指定的类库资源,但是为何呢?
    因为如图可以看见 初始化AppClassLoader的时候, 已经指定了java.class.path作为其加载类的目录。而java.class.path包含了classpath的目录
    在这里插入图片描述
    AppClassLoader加载的是java.class.path指定的目录,其包含-classpath指定的目录
    在这里插入图片描述
    -classpath
    在这里插入图片描述

    ps:ExtClassLoader类似
    在这里插入图片描述

  • 相关阅读:
    JAVA-JDBC
    如何优雅地拼SQL的in子句
    Groovy 语言尝鲜
    小而美的CNC机器
    GCode软件和资料
    基于PC的运动控制
    CAD/CAM软件
    工控硬件
    数控系统
    Visual Studio 2019 Community 版离线注册
  • 原文地址:https://www.cnblogs.com/thewindkee/p/12873122.html
Copyright © 2011-2022 走看看