Launcher类源码分析
基于上一次获取系统类加载器这块进行分析:
关于这个方法的javadoc在之前已经阅读过了,不过这里再来仔细阅读一下加深印象:
这里有一个非常重要的概念:上下文类加载器:
它的作用非常之大,在后面会详细进行学习,先有个印象。
接着来看一下它的具体实现:
再来看一下是如何初始化的:
所以接下来将焦点定位到获取Launcher实例上:
那有没有办法获得它的源代码呢?当然有,这里就需要用到一个开源版本的JDK,叫Open Jdk,它跟Oracle的JDK90%以上的代码是一模一样的,它的网站是:openjdk.java.net,如下:
除此之外还有一个比较好浏览源代码的网站:grepcode.com,如下:
然后在里面搜一下咱们要查看的Launcher类:
好,接下来细读一下它的源码:
首先看一下具体获取扩展类的代码:
所以为啥之前在打印相关系统加类加器路径时会用到了“java.ext.dris”系统属性了,原因就是来自于源代码。
接着就回到了主流程:
另外我们看一下ExtClassLoader的继承体系:
所以其最终都是继承至ClassLoader,这次先分析到这,下次继续。