扩展类载入器的载入问题
我们写了一个helloworld类,载入的时候,二进制字节码送给系统类载入器,可是系统类会询问它的父载入器(扩展类)你能载入不?扩展类载入器也会询问自己的父载入器(引导类)你能载入不?
通俗的说,引导扩展系统三个载入器就像爷爷父亲孙子一样,他们载入非常孝顺,载入类的时候都先让长辈载入,长辈不能载入自己才会去载入。
这样做有什么优点么?
假设你写了一个全名为java.lang.Object的类,里面有一些危急代码,载入时首先会是系统类载入器尝试载入..最后是引导类来载入,它会依照路径直接去C:\Program Files\Java\jdk1.7.0_15\jre\lib\rt.jar这个位置里去找java.lang.Object。总而言之,安全!
public class Property
{public static void main(String[] args){System.out.println("boot "+System.getProperty("sun.boot.class.path"));System.out.println("ext "+System.getProperty("java.ext.dirs"));System.out.println("system "+System.getProperty("java.class.path"));try{System.out.println(Class.forName("Property").getClassLoader()+"PPP");}catch (Exception e){e.printStackTrace();}}
}
执行结果
boot C:\Program Files\Java\jdk1.7.0_15\jre\lib\resources.jar;C:\Program Files\Java\jdk1.7.0_15\jre\lib\rt.jar;C:\Program Files\Java\jdk1.7.0_15\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.7.0_15\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.7.0_15\jre\lib\jce.jar;C:\Program Files\Java\jdk1.7.0_15\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.7.0_15\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.7.0_15\jre\classes
ext C:\Program Files\Java\jdk1.7.0_15\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext
system .;C:\Program Files\Java\jdk1.7.0_15\lib\dt.jar;C:\Program Files\Java\jdk1.7.0_15\lib\tools.jar;C:\Program Files\Java\jdk1.7.0_15\jre\lib\rt.jar;E:\apache-tomcat-7.0.47_8700\lib\servlet-api.jar;
sun.misc.Launcher$AppClassLoader@fb56b1PPP
通过上面的样例,大家就知道了三级载入器的载入范围;
如今我有一个想法,假设咱们把Property类的class文件放到扩展类载入器的文件夹下,那它是不是就会被扩展类载入器所载入呢?
ok,我把Property类的class文件放到扩展类载入器的文件夹下,结果不变;
奇怪了,不是说好了扩展载入器载入 C:\Program Files\Java\jdk1.7.0_15\jre\lib\ext这个文件夹下的文件吗?
要不,压缩成jar文件?
要不,换个压缩方式?
例如以下图
如今我们至少能知道几个问题
1 在扩展类载入器的载入文件夹下,仅仅认jar格式的文件,class文件不看
2 jar还得是zip的压缩格式!
.... 就为了这么一点小问题 我花了快2个小时 羞愧
转载于:https://www.cnblogs.com/jhcelue/p/7268007.html
扩展类载入器的载入问题相关推荐
- java类载入器——ClassLoader
Java的设计初衷是主要面向嵌入式领域,对于自己定义的一些类,考虑使用依需求载入原则.即在程序使用到时才载入类,节省内存消耗,这时就可以通过类载入器来动态载入. 假设你平时仅仅是做web开发,那应该非 ...
- java载入器材_JAVA之了解类载入器Classloader
1.类的载入.连接和初始化 类初始化通常包含载入.连接.初始化三个步骤. (1)进程的结束 每当执行一个java程序时,将会启动一个java虚拟机进程,无论程序多么复杂.有多少线程.都在这个java虚 ...
- tomcat(8)载入器
[0]README 0.0)本文部分描述转自"深入剖析tomcat",旨在学习 tomcat(8)载入器 的基础知识: 0.1)一个标准web 应用程序中的载入器:简单来说就是 t ...
- Tomcat类载入器(转载)
1 - Tomcat的类载入器的结构 Tomcat Server在启动的时候将构造一个ClassLoader树,以保证模块的类库是私有的 Tomcat Server的ClassLoader结构如下: ...
- 引导类、扩展类、系统类加载器的使用及演示
一.启动类加载器(引导类加载器, Bootstrap ClassLoader) 1.这个类是使用c/c++语言实现的, 嵌套在JVM内部. 2.它用来加载java的核心库(java_home/jre/ ...
- objective-c中Category类别(扩展类)专题总结
objective-c中Category类别(扩展类)专题总结 objective-c中Category 类别.扩展 专题总结 http://blog.csdn.net/jiajiayouba/art ...
- python类装饰器详解-Python类装饰器实现方法详解
本文实例讲述了Python类装饰器.分享给大家供大家参考,具体如下: 编写类装饰器 类装饰器类似于函数装饰器的概念,但它应用于类,它们可以用于管理类自身,或者用来拦截实例创建调用以管理实例. 单体类 ...
- python装饰器类-python装饰器2:类装饰器
本文是装饰器相关内容的第二篇,关于类装饰器. "类装饰器"有两种解读方式:用来装饰类的装饰器:类作为装饰器装饰其它东西.你如何认为取决于你,两种说法都有出现在其它的文章中.我的文章 ...
- python类装饰器详解-Python装饰器基础概念与用法详解
本文实例讲述了Python装饰器基础概念与用法.分享给大家供大家参考,具体如下: 装饰器基础 前面快速介绍了装饰器的语法,在这里,我们将深入装饰器内部工作机制,更详细更系统地介绍装饰器的内容,并学习自 ...
最新文章
- 蓝牙模块引起电路干扰
- 如何解决实时历史数据库存储成本问题?
- Ionic 用于构建惊人的移动应用程序的顶级开源框架
- VTK:可视化算法之VelocityProfile
- python做公司内部系统错误_Python程序可能导致文件系统错误?
- 2011年Android手机用户购买行为研究报告
- ICCV 2019 VisDrone挑战赛冠军方案解读
- 【人脸表情识别】基于matlab GUI CNN人脸表情识别【含Matlab源码 787期】
- 宏正ATEN推出ALTUSEN系列 全面冲刺KVM高端市场
- 传奇GOM引擎授权过期解决方法.
- 思考篇|姜子牙观影后感
- 使用window.close()关闭标签页的注意事项
- 【分享】VMOS Pro1.4.2最新会员版
- 实现手机来电铃声,通知铃声、警告铃声等音频定制化功能(三,多媒体扫描结果定制处理)
- 【JZOJ3794】【洛谷P1383】高级打字机【主席树】
- 修复压缩文件提示:现校验和错误。该文件已损坏
- Jetbrains系列产品
- 分享][转帖] 无光驱安装系统的方法
- (精)反激式开关电源
- 【JavaScript基础-二维数组】JavaScript修改二维数组的某个元素时,其上下元素也受到影响
热门文章
- 关于json时间字符串格式化处理
- latex python_怎么在 LaTeX 中排版 Python 代码?
- mysql有符号数_mysql里面有符号整数类型有关问题,请指点,多谢
- 服务器系统关了,各种服务器系统的关机
- js获得服务器时间并实时更新
- app传输数据到php,安卓app客户端和使用php的服务器端数据交互
- linux系统中删除一次性任务流程,Linux系统中的计划任务
- 服务器的安装文件,服务器存储安装文件
- c++ 删除vector里面的第一个元素_C++提高第三篇2 STL常用容器 vector
- java环境变量win8_win8java环境变量设置