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

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

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

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

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

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

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

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

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

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

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

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

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

接着就回到了主流程:

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

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

最新文章

  1. js实现css3的过渡,需要注意的一点(浏览器优化)
  2. 移动端API架构 统一Proxy还是各自为政?
  3. 准备开发一款开源NES模拟器
  4. Objective-C objc_class 介绍
  5. libcurl with telnet
  6. 分布式缓存BeIT Memcached简介(转载)
  7. 何为 pimpl ?
  8. cocos2dx 音效 粒子 数据存储
  9. hdu 3695 Computer Virus on Planet Pandora(AC自己主动机)
  10. Java的原始类型自动包装与解包机制
  11. OpenCV常用头文件介绍
  12. springboot整理
  13. excel怎么把单元格内某个字标红,其他字不变
  14. Spring Boot – 自定义PropertyEditor
  15. IndentationError 这个错误是缩进的问题
  16. iOS10 远程通知需要有entitlements的支持
  17. Go 程序的性能调试问题
  18. 阿里Java编码规范
  19. Oracle VM VirtualBox CentOS7桥接设置问题解决
  20. hadoop mysql install (5)

热门文章

  1. C#使用MPI进行高性能计算
  2. html5新增的语义化标签极其作用
  3. 关于Python Web框架——Tornado
  4. 课程设计之C/C++实现用户登录注册
  5. 局部内部类的final问题
  6. 《MIT 6.828 Lab 1 Exercise 10》实验报告
  7. JAVA日常之四
  8. class.forName 和 classLoader的区别
  9. 从cbv到fbv:用函数写视图与用类写视图的区别(drf与restful)
  10. 适合新手的160个creakme(二)