Launcher类源码分析

基于上一次获取系统类加载器这块进行分析:

关于这个方法的javadoc在之前已经阅读过了,不过这里再来仔细阅读一下加深印象:

这里有一个非常重要的概念:上下文类加载器:

它的作用非常之大,在后面会详细进行学习,先有个印象。

接着来看一下它的具体实现:

再来看一下是如何初始化的:

所以接下来将焦点定位到获取Launcher实例上:

那有没有办法获得它的源代码呢?当然有,这里就需要用到一个开源版本的JDK,叫Open Jdk,它跟Oracle的JDK90%以上的代码是一模一样的,它的网站是:openjdk.java.net,如下:

除此之外还有一个比较好浏览源代码的网站:grepcode.com,如下:

然后在里面搜一下咱们要查看的Launcher类:

好,接下来细读一下它的源码:

首先看一下具体获取扩展类的代码:

所以为啥之前在打印相关系统加类加器路径时会用到了“java.ext.dris”系统属性了,原因就是来自于源代码。

接着就回到了主流程:

另外我们看一下ExtClassLoader的继承体系:

所以其最终都是继承至ClassLoader,这次先分析到这,下次继续。

posted on 2018-06-28 21:49  cexo  阅读(586)  评论(0编辑  收藏  举报

导航