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

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

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

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

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

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

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

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

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

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

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

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

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

接着就回到了主流程:

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

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

Launcher类源码分析的更多相关文章

  1. List 接口以及实现类和相关类源码分析

    List 接口以及实现类和相关类源码分析 List接口分析 接口描述 用户可以对列表进行随机的读取(get),插入(add),删除(remove),修改(set),也可批量增加(addAll),删除( ...

  2. Cocos2d-X3.0 刨根问底(六)----- 调度器Scheduler类源码分析

    上一章,我们分析Node类的源码,在Node类里面耦合了一个 Scheduler 类的对象,这章我们就来剖析Cocos2d-x的调度器 Scheduler 类的源码,从源码中去了解它的实现与应用方法. ...

  3. Java Properties类源码分析

    一.Properties类介绍 java.util.Properties继承自java.util.Hashtable,从jdk1.1版本开始,Properties的实现基本上就没有什么大的变动.从ht ...

  4. java中List接口的实现类 ArrayList,LinkedList,Vector 的区别 list实现类源码分析

    java面试中经常被问到list常用的类以及内部实现机制,平时开发也经常用到list集合类,因此做一个源码级别的分析和比较之间的差异. 首先看一下List接口的的继承关系: list接口继承Colle ...

  5. Java并发编程笔记之Unsafe类和LockSupport类源码分析

    一.Unsafe类的源码分析 JDK的rt.jar包中的Unsafe类提供了硬件级别的原子操作,Unsafe里面的方法都是native方法,通过使用JNI的方式来访问本地C++实现库. rt.jar ...

  6. String 类源码分析

    String 源码分析 String 类代表字符序列,Java 中所有的字符串字面量都作为此类的实例. String 对象是不可变的,它们的值在创建之后就不能改变,因此 String 是线程安全的. ...

  7. Cocos2d-X3.0 刨根问底(三)----- Director类源码分析

    上一章我们完整的跟了一遍HelloWorld的源码,了解了Cocos2d-x的启动流程.其中Director这个类贯穿了整个Application程序,这章随小鱼一起把这个类分析透彻. 小鱼的阅读源码 ...

  8. Java线程池ThreadPoolExecutor类源码分析

    前面我们在java线程池ThreadPoolExecutor类使用详解中对ThreadPoolExector线程池类的使用进行了详细阐述,这篇文章我们对其具体的源码进行一下分析和总结: 首先我们看下T ...

  9. Spring之WebContext不使用web.xml启动 初始化重要的类源码分析(Servlet3.0以上的)

    入口: org.springframework.web.SpringServletContainerInitializer implements ServletContainerInitializer ...

随机推荐

  1. Insomni’hack CTF-l33t-hoster复现分析

    题目地址: https://github.com/eboda/insomnihack/tree/master/l33t_hoster 源码如下: <?php if (isset($_GET[&q ...

  2. Windows下直接双击可执行的jar

    如果没有设置,那么就是用命令行: jar处在文件夹路径下打开命令行:java -jar xxx.jar 总的来说是有点不方便 首先默认打开jar程序得是相同jdk的java.exe 然后是一闪而过 下 ...

  3. 【leetcode算法-简单】20. 有效的括号

    [题目描述] 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合.注意空字 ...

  4. jdk1.8 -- optional 的使用

    一.optional的介绍 Optional 是个容器:它可以保存类型T的值,或者仅仅保存null.Optional提供很多有用的方法,这样我们就不用显式进行空值检测. Optional 类的引入很好 ...

  5. Python+requests重定向和追踪

    Python+requests重定向和追踪 一.什么是重定向 重定向就是网络请求被重新定个方向转到了其它位置 二.为什么要做重定向 网页重定向的情况一般有:网站调整(如网页目录结构变化).网页地址改变 ...

  6. Python 解leetcode:2. Add Two Numbers

    题目描述:输入两个非空单链表,链表的每个结点的值是一个1位数整数,两个链表都是一个大整数每一位的逆序排序,求这两个链表代表的整数的和的链表值: 思路: 分别遍历两个链表,转化成相应的整数,求和后把结果 ...

  7. Eureka【支持Remote Region】

    工程公共pom依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncod ...

  8. 在Visual C++ 6.0中为代码添加行号

    由如上代码可知Visual C++ 6.0是没有行号的(新手代码不要在意,重点是没有行号),在编译报错的时候会发现其会指出在第几行错了,如果没有代码行号将很难找到它 为解决这个问题可以安装插件给Vis ...

  9. HDU 4417-Super Mario-线段树+离线

    Description Mario is world-famous plumber. His "burly" figure and amazing jumping ability ...

  10. php商城秒杀活动

    今天在网上看到一篇思路+代码的商城秒杀实例,我觉得非常不错,借鉴一下分享给大家: 一.前言 双十一刚过不久,大家都知道在天猫.京东.苏宁等等电商网站上有很多秒杀活动,例如在某一个时刻抢购一个原价199 ...