JVM学习笔记20——类加载器命名空间实战剖析与透彻理解
发布日期:2021-06-29 01:18:55
浏览次数:2
分类:技术文章
本文共 1171 字,大约阅读时间需要 3 分钟。
在上一节的基础上创建MyTest17_1
public class MyTest17_1 { public static void main(String[] args) throws Exception{ // 将系统类加载器当做loader1的父加载器 MyTest16 loader1 = new MyTest16("loader1"); loader1.setPath("D:\\workspace\\"); Class clazz = loader1.loadClass("com.yshuoo.jvm.classloader.MySample"); System.out.println("class: " + clazz.hashCode()); Object object = clazz.newInstance(); }}
只删除target里的MyCat,运行程序报错
只删除target里的MySample,运行正常
是由加载了MySample的类加载器去加载的MyCat
对MyCat做出如下改变
public class MyCat { public MyCat(){ System.out.println("MyCat is loaded by: " + this.getClass().getClassLoader()); System.out.println("from MyCat: " + MySample.class); }}
删除target里的MySample,运行报错
对MySample进行改造,将MyCat的改变复原
public MySample(){ System.out.println("MySample is loaded by: " + this.getClass().getClassLoader()); new MyCat(); System.out.println("from MySample: " + MyCat.class); }public class MyCat { public MyCat(){ System.out.println("MyCat is loaded by: " + this.getClass().getClassLoader()); }}
重新编译后再次把MySample删掉,运行正常
关于命名空间的重要说明:
- 子加载器所加载的类能够访问到父加载器所加载的类
- 父加载器所加载的类无法访问到子加载器所加载的类
转载地址:https://blog.csdn.net/yshuoo/article/details/116527997 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月19日 15时44分23秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
3.vue条件语句
2019-04-29
10.vue实战--form表单属性绑定
2019-04-29
11.vue实战--form表单字段验证提交验证
2019-04-29
12.vue实战--接口请求,组件使用,页面跳转配置
2019-04-29
打破职能之缺陷预防之路
2019-04-29
mac开启mysql,重置mysql密码,允许远程连接
2019-04-29
安装kibana
2019-04-29
linux安装nodejs
2019-04-29
tomcat部署vue,spring项目
2019-04-29
idea2020打包war包
2019-04-29
测试框架
2019-04-29
解决切换分支时,maven不自动下载依赖的问题
2019-04-29
java正则
2019-04-29
ios app开发环境配置方法总结
2019-04-29
app界面设计规范及缺陷
2019-04-29
TV App的设计借鉴游戏界面设计技巧
2019-04-29
短视频APP开发对影视行业有哪些影响?
2019-04-29
如何解决APP应用反应速度缓慢问题?
2019-04-29
APP开发失败的原因有哪些?
2019-04-29
解决软件开发中常见的问题
2019-04-29