ClassLoader

问题描述:classloader是什么意思 大家好,小编来为大家解答以下问题,classloader和Class.forname的区别,classloader.getsystemresource,现在让我们一起来看看吧!

ClassLoader的工作机制是什么?

ClassLoader的相关图片

Classloader 类加载器,

用来加载 Java 类到 Java 虚拟机中。与普通程序不同的是。

Java程序(class文件)并不是本地的可执行程序。当运行Java程序时,首先运行JVM(Java 虚拟机),然后再把Java class加载到JVM里头运行,负责加载Java class的这部分就叫做Class Loader。

如何使用class,ClassLoader获取资源的相关图片

如何使用class,ClassLoader获取资源

java应用环境中不同的class分别由不同的ClassLoader负责加载。

一个jvm中默认的classloader有Bootstrap ClassLoader、Extension ClassLoader、App ClassLoader,分别各司其职:

Bootstrap ClassLoader负责加载java基础类,主要是 %JRE_HOME/lib/ 目录下的rt.jar、resources.jar、charsets.jar和class等;

Extension ClassLoader负责加载java扩展类,主要是 %JRE_HOME/lib/ext 目录下的jar和class;

App ClassLoader负责加载当前java应用的classpath中的所有类。

其中Bootstrap ClassLoader是JVM级别的,由C++撰写;Extension ClassLoader、App ClassLoader都是java类,都继承自URLClassLoader超类。

Bootstrap ClassLoader由JVM启动,然后初始化sun.misc.Launcher ,sun.misc.Launcher初始化Extension ClassLoader、App ClassLoader。

Bootstrap ClassLoader、Extension ClassLoader、App ClassLoader三者的关系如下:

Bootstrap ClassLoader是Extension ClassLoader的parent,Extension ClassLoader是App ClassLoader的parent。

但是这并不是继承关系,只是语义上的定义,基本上,每一个ClassLoader实现,都有一个Parent ClassLoader。

可以通过ClassLoader的getParent方法得到当前ClassLoader的parent。Bootstrap ClassLoader比较特殊,因为它不是java class所以Extension ClassLoader的getParent方法返回的是NULL。

为什么要自定义classloader的相关图片

为什么要自定义classloader

Class类中的方法:

1、URL getResource(String name)。

查找带有给定名称的资源。

如果在eclipse中编写并运行。

参数name为"","."时

file:/D:/JAVA%20IDE/eclipse3.2/work/MyTest/bin/com/hss/load/。

为"/"时

file:/C:/Program%20Files/Java/jre1.6.0_04/lib/ext/classes/。

2、InputStream getResourceAsStream(String name)。

查找具有给定名称的资源。

与1类似,只是形式不同

非常奇怪的是如果不用IDE,而只将文件放于硬盘的一处,得到的结果只是(无论是",".")

file:/C:/Program%20Files/Java/jre1.6.0_04/lib/ext/classes/。

ClassLoader类中的方法。

1、URL getResource(String name)。

查找具有给定名称的资源。

参数name为"","."时

ur1:file:/C:/Program%20Files/Java/jre1.6.0_04/lib/ext/classes/。

须注意的是该classloader是系统类加载器,其他加载器也一样。

2、InputStream getResourceAsStream(String name)。

返回读取指定资源的输入流。

3、Enumeration<URL> getResources(String name)。

查找所有给定名称的资源。

4、static URL getSystemResource(String name)。

从用来加载类的搜索路径中查找具有指定名称的资源。

name只能是"",或者".",否则得到的是null。

输出结果是 file:/C:/Program%20Files/Java/jre1.6.0_04/lib/ext/classes/。

5、static InputStream getSystemResourceAsStream(String name)。

从用来加载类的搜索路径打开具有指定名称的资源,以读取该资源。

以4相似,只是返回的是InputStream。

6、static Enumeration<URL> getSystemResources(String name)。

从用来加载类的搜索路径中查找所有具有指定名称的资源。

name只能是"",或者".",否则得到的是null。

输出结果是 file:/C:/Program%20Files/Java/jre1.6.0_04/lib/ext/classes/,

file:/D:/JAVA%20IDE/eclipse3.2/work/MyTest/bin/(测试类的class文件位于此目录)

总结:一般使用Class的getResource("/")获取当前类路径(包所在的顶层目录),使用getResource("")获取当前类的具体存放路径(具体到包目录的最底层如com.hss.servlet.MyServlet时,获取的路径将是com/hss/servlet)。

的相关图片

比较典型的自定义classloader使用情况就是给类加密。java编译的代码可以轻易的被反编译,有些企业会给自己的类做特殊的加密,防止反编译,类加密后就不能再用java的。

classloader去加载类了,这时就需要自定义classloader,再加载类的时候先解密类,然后再加载。

具体的代码自己可以百度一下class加密有很多文章介绍的。

原文地址:http://www.qianchusai.com/ClassLoader.html

errorgeno

errorgeno

香港城市大学计算机博士,香港城市大学计算机博士毕业难度

香港城市大学计算机博士,香港城市大学计算机博士毕业难度

思科无线ap配置图解,思科无线ap怎么连接交换机

思科无线ap配置图解,思科无线ap怎么连接交换机

介绍网购,介绍网购的英语作文80

介绍网购,介绍网购的英语作文80

cc/会计毕业论文8000字,会计毕业论文8000字完整版

cc/会计毕业论文8000字,会计毕业论文8000字完整版

db2报错55019解决,db2 55019 错误

db2报错55019解决,db2 55019 错误

香港理工大学博士待遇,香港理工大学博士回国就业前景怎么样

香港理工大学博士待遇,香港理工大学博士回国就业前景怎么样

v2ray能ping通无法上网,v2rayn可以ping通打不开网页

v2ray能ping通无法上网,v2rayn可以ping通打不开网页

有女名熹(1v1),有女名熹(1v1)全文免费阅读番外

有女名熹(1v1),有女名熹(1v1)全文免费阅读番外

感悟生活作文600字初中,感悟生活的作文600字初中作文

感悟生活作文600字初中,感悟生活的作文600字初中作文

三国志战略版造币厂最多多少个 - 造币厂数量限制详解 三国志战略版土地守军攻略大全 - 完整攻略指南 三国志战略版虎帐攻略 - 最新虎帐玩法技巧大全 三国志战略版夏日炎炎 - 火热夏日活动专题 三国志战略版自愈技能使用指南 - 最佳武将推荐与搭配策略 三国志战略版10级土地势力值计算与攻略 - 完整指南 三国志战略版秘策模式 - 全攻略与技巧分享 三国志战略版关妹配队攻略 - 关银屏最强阵容搭配推荐 三国志战略版乐府有必要建造吗?深度分析攻略 - 三国志战略版攻略站 三国志战略版势力介绍 - 魏蜀吴势力详解与武将分析 三国志战略版3万预备兵成就攻略 - 最全达成指南 三国志三国赏三军 - 完整攻略与奖励详解 三国志战略版控制类武将完全攻略 - 技能搭配与阵容推荐 三国志战略版军屯有什么用 - 军屯系统全面解析与攻略 三国志战略版8级地要多少兵力 - 详细攻略与计算器 百骑劫营三国志战略版 - 完整攻略与阵容搭配 | 三国志战略版攻略站 三国志战略版战法克制攻略 - 完整克制关系表与策略指南 三国志战略版S3黄月英攻略 - 技能搭配阵容推荐 三国志战略版百骑劫营攻略大全 - 玩法技巧与阵容推荐 三国志战略版乐府值攻略大全 - 获取方式与使用技巧 三国志战略版核心结构 - 深度解析游戏玩法与策略体系 三国志战略版满级造币厂 - 升级攻略与属性详解 三国志战略版15000势力值任务攻略 - 快速达成指南 三国志战略版军屯等级详解 - 军屯升级攻略与资源产出表 三国志战略版军屯加点攻略 - 最优加点方案与策略指南 三国志战略版火烧连营战法详解 - 最强火系战法攻略 三国志战略版测试服列表 - 最新测试服务器信息 三国志战略版自愈战法搭配指南 - 最强治疗战法推荐 三国志战略版大型军团势力值排行榜 - 最新战力数据分析 三国志战略版四星武将大全 - 完整图鉴与攻略