分析BootstrapClassLoader/ExtClassLoader/AppClassLoader的加载路径及"父委托机制"
运行时输出如下:
BootstrapClassLoader 的加载路径:
file:/C:/jdk1.7.0_01/jre/lib/resources.jar
file:/C:/jdk1.7.0_01/jre/lib/rt.jar
file:/C:/jdk1.7.0_01/jre/lib/sunrsasign.jar
file:/C:/jdk1.7.0_01/jre/lib/jsse.jar
file:/C:/jdk1.7.0_01/jre/lib/jce.jar
file:/C:/jdk1.7.0_01/jre/lib/charsets.jar
file:/C:/jdk1.7.0_01/jre/classes
----------------------------
sun.misc.Launcher$ExtClassLoader@3e389405
扩展类加载器 的加载路径:
file:/C:/jdk1.7.0_01/jre/lib/ext/dnsns.jar
file:/C:/jdk1.7.0_01/jre/lib/ext/localedata.jar
file:/C:/jdk1.7.0_01/jre/lib/ext/sunec.jar
file:/C:/jdk1.7.0_01/jre/lib/ext/sunjce_provider.jar
file:/C:/jdk1.7.0_01/jre/lib/ext/sunmscapi.jar
file:/C:/jdk1.7.0_01/jre/lib/ext/zipfs.jar
----------------------------
sun.misc.Launcher$AppClassLoader@a200d0c
应用(系统)类加载器 的加载路径:
file:/E:/JAVA/JVM_Class_Reflect_Thread/ClassPath_of_Bootstrap_Ext_AppClassLoader/bin/
----------------------------
现在我们就知道了这三个类加载器的加载路径了:
- BootstrapClassLoader ---加载jre/目录下的核心库
- ExtClassLoader扩展类加载器 ---加载/jre/lib/ext/目录下的扩展包
- AppClassLoader应用(系统)类加载器 ---加载CLASSPATH路径下的包
JDK源代码中,protected Class<?> loadClass(String name, boolean resolve)方法
已经很好地体现出"父亲委托机制":
1:先调用parent.loadClass(name, false)
2:如果父亲加载失败,则调用loadClass(name, false)方法 查找"当前类加载器"对应的"目录"来加载
public
Class<?>loadClass(Stringname,boolean resolve)
此方法的默认实现将按以下顺序搜索类:
1.调用findLoadedClass(name)来检查是否已经加载类。
2.在父类加载器上调用
loadClass方法。如果父类加载器为 null,则使用虚拟机的内置类加载器。
3.调用findClass(name)方法查找类。
/////////-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PS: 如果用户想从自定义的目录下加载类(.class文件),则可以自定义类加载器:
分享到:
相关推荐
1,类加载机制 类的使用周期: **注意:**类加载的时候,也就是new对象时,加载顺序是:静态代码块...c++编写,加载java核心库 java.*,构造ExtClassLoader和AppClassLoader。由于引导类加载器涉及到虚拟机本地实现细
所谓双亲代理就是指,当加载类的时候首先去Bootstrap中加载类,如果没有则去Extension中加载,如果再没有才去AppClassLoader中去加载。从而实现安全和稳定。 Java ClassLoader BootstrapClassLoader 引导类加载器 ,...
java8 rt.jar源码 JVM探究 请你谈谈你对JVM的理解?java8虚拟机和之前的变化和...java.*,构造ExtClassLoader和AppClassLoader。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所
启动类加载器(BootStrapclassLoader)、扩展类加载器(ExtensionclassLoader)和应用程序类加载器(ApplicationclassLoader)这三种类加载器帮助完成类的加载。启动类加载器–负责从启动类路径中加载类,无非就是rt.jar。...
GUI API包含的类分为三个部分:组件类(component class) 容器类(container class),和辅助类(helper class) 1. 组件类是用来创建用户图形界面的,例如JButton,JLabel,JTextField. 2. 容器类是用来包含其他组件的,例如JFrame,JPanel 3. 辅助类是用来支持GUI组件的,例如Color,Font
汉诺塔c语言递归
mybatis-plus-core.jar 各个版本,免费下载, mybatis-plus-core.jar 是 MyBatis 的增强工具核心包。免费下载 。 MyBatis-Plus(简称 MP),是一个 MyBatis 的增强工具包,只做增强不做改变,为简化开发工作、提高生产率而生。
mybatis-plus-generato.jar 包,各个版本,免费下载。 mybatis-plus 代码生成器生成代码框架。各个版本,免费下载。 下载不了,关注我,评论区联系我。
行业研究
stm32项目知识领域: 网络安全 技术关键词: 漏洞分析、渗透测试、加密算法 内容关键词: 攻击防范、身份验证、网络流量分析 用途: 学习保护信息系统免受恶意攻击和数据泄露 资源描述: "OWASP官方网站"提供了全面的网络安全知识和工具,包括常见漏洞、安全指南和最佳实践。
mybatis-plus-core.jar 各个版本,免费下载, mybatis-plus-core.jar 是 MyBatis 的增强工具核心包。免费下载 。 MyBatis-Plus(简称 MP),是一个 MyBatis 的增强工具包,只做增强不做改变,为简化开发工作、提高生产率而生。
测试YUV图像数据的具体格式(1).zip
多思计算机组成原理实验三 存储器实验.docx
行业分析报告
st-stm32cubeide_1.15.0_20695_20240315_1429_x86_64
调节篮球比赛定时器,毕业设计实验报告,multisim仿真,AD09原理图及PCB图
halcon缺陷检测
JSP 标准标签库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问. 如果要使用JSTL,则必须将standard-1.1.2.jar和 jstl-1.2.jar文件放到classpath中
本文深入探讨了微电网多目标调度问题,提出了一种改进的多目标粒子群算法(MOPSO),以实现微电网系统在经济性、可靠性和环境影响等多个目标函数之间的优化平衡。文章详细介绍了算法的改进机制,并通过案例分析展示了其在实际微电网调度中的应用效果。本研究适用于电力系统工程师、能源管理专业人士以及对智能电网和优化算法感兴趣的学者。使用场景包括微电网的规划、运行和维护,特别是在考虑经济性和环境因素时的系统优化。 关键词 微电网
视频批量剪辑,亲测可用,操作简单,视频创作者福音