JDK中提供了3种不同的类加载器:启动类装载器,扩展类装载器和系统类装载器。
引导类装载器,用于引导启动Java虚拟机,当执行一个JAVA程序时,就会启动引导类装载器,它是使用本地代码来实现的,会装载%JAVA_HOME%\\jre\lib\rt.jar,它是所有类装载器类的父装载器。扩展类装载器负责载入标准扩展目录中的类,其搜索路径是%JAVA_HOME%\jre\lib\ext,只需要将打包好的jar文件放入这个目录就可以了,给开发提供了很大的便利性。系统类装载器是默认的装载器,其搜索路径是classpath。
JVM到底使用的是哪一个类装载器,取决于类装载器的代理模式。每当需要装载一个类的时候,会首先调用系统类装载器,但是系统类装载器并不会立即装载,而是将其交给父装载器:扩展类装载器,扩展类装载器其将交给引导类装载器,引导类装载器没有父装载器,它会尝试装载这个类,如果找不到这个类,会交给扩展类装载器,如果扩展类装载器还是没有找到,会交给系统类装载器,如果系统类装载器还是没有找到这个类,则会抛出java.lang.ClassNotFoundException异常。代理模式主要是为了解决类装载的安全问题。例如:对于自定类的java.lang.Object类,永远得不到装载,除非,rt.jar中确实没有这个类。
public class TestClassLoader { public static void main(String[] args) { System.out.println(ClassLoader.getSystemClassLoader()); System.out.println(ClassLoader.getSystemClassLoader().getParent()); System.out.println(ClassLoader.getSystemClassLoader().getParent().getParent()); } }
结果:
sun.misc.Launcher$AppClassLoader@19fc4e sun.misc.Launcher$ExtClassLoader@2a0364ef null
。。
相关推荐
ClassLoaderTest 测试自定义的URLClassLoader以加载类 测试如何正确关闭类加载器。 测试如何使用反射关闭JarFile来修复资源泄漏。
public class ClassLoaderTest { public static void main(String[] args) throws ClassNotFoundException { ClassLoader cl = ClassLoader.getSystemClassLoader(); //下面语句仅仅是加载Tester类 cl....
这是一个基于Objective-C语言的基础案例集。旨在用于给初学者快速了解Objective-C语言的语法。.zip
01 整理数据 _ 合并多数据,分析更有趣.ipynb
创业、工作、毕业、课程需要人群,可以参考使用,支持有偿远程部署,联系我,保证一定能跑起来
流程行业智能工厂总体设计方案qy.pptx
ModStartBlog现代化个人博客系统 v5.2.0源码.rarModStartBlog现代化个人博客系统 v5.2.0源码.rar
企业IT统一智能运营管理解决方案qy.pptx
华为用“三阶段十二步”法保证业务战略引领数字化转型32个精华问答glkb.pptx
搭建数据分析和机器学习平台,实现如下功能:设计一个网页版的用户界面,支持从本地选取数据集、自动可视化分析、查看训练记录、查看训练模型参数和绘图和支持完成机器学习任务。核心工具:streamlit和pycaret,部署和运行方便,只需streamlit run main.py命令即可。
毕业设计 jsp+基于JB的人事管理系统(源代码+论文)
基于C++14语法的任务链.zip
毕业设计JSP+SQL网站流量统计管理系统(源代码+论文)
本Bash脚本用于自动化管理Java JAR应用的启动、停止及监控。首先检查JAR进程是否在运行,如在运行则安全终止。随后,使用预设的Java参数启动JAR文件,并将输出和错误日志重定向至日志文件。启动后,脚本持续监控JAR进程状态,确保其在预设时间内成功启动。本脚本提供了灵活的配置和错误处理机制,为Java应用的运维管理带来了便捷与可靠性。
2024-2030全球及中国阵列光谱仪行业研究及十五五规划分析报告
基于Reactor模式,支持单线程、多线程Reactor,也支持UDP服务
一、源码特点 java web进销存管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为sqlserver2008,使用java语言开发。 二、功能介绍 如博客中介绍 三、注意事项 1、管理员账号:admin密码:admin 数据库配置文件DBO.java 2、开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为sqlserver2008,使用java语言开发。 3、数据库文件名是jspjxc.mdf,系统名称jxc 4、系统首页地址:http://127.0.0.1:8080/jxc/login.jsp 不包含人工调试服务,如果需要联系作者购买
如何在 Ubuntu 16.04 上使用 Node-RED 连接你的物联网设备
libAvogadro1-1.98.1-2.1.armv7hl