class loader总结

本文详细介绍了Java中类加载器的工作原理及加载顺序,包括BootStrapClassLoader、ExtClassLoader和AppClassLoader等。特别关注了EJBClassLoader和WebAppClassLoader的特点及其在应用服务器中的角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自javaeye,作者bruce,原文链接http://forum.javaeye.com/viewtopic.php?t=11


Class Loader的作用范围:

BootStrap Class Loader:

load JRE/lib/rt.jar, sunrsasign.jar, charsets.jar, jce.jar, jsse.jar, plugin.jar

Ext Class Loader:

load JRE/lib/ext目录下的库文件, load JRE/classes目录下的类

App Class Loader:

load CLASSPATH变量指定路径下的类

以上的load路径都是写死在JVM的C++源代码里面的,不能改变,详细请见王森的《Java深度历险》

EJB Class Loader:

继 承自App Class Loader,继承层次根据App Server有所不同,一个EJB Class Loader它的load Class的范围仅限于JAR或者EAR范围之内。App Server会针对每一个EJB包文件创建一个EJB Class Loader的实例.

Web App Class Loader:

继承自App Class Loader,继承层次根据App Server有所不同,一个Web App Class Loader:它的load Class的范围在 WEB-INF/lib下的库文件和WEB-INF/classes目录下的class文件。

Class Loader加载类的顺序:
The ClassLoader class uses a delegation model to search for classes and resources. Each instance of ClassLoader has an associated parent class loader. When requested to find a class or resource, a ClassLoader instance will delegate the search for the class or resource to its parent class loader before attempting to find the class or resource itself. The virtual machine's built-in class loader, called the "bootstrap class loader", does not itself have a parent but may serve as the parent of a ClassLoader instance.

ClassLoader类使用了委托模型来查找类和资源。如果ClassLoader实例有一个与其相关联的父类加载器。在查找其自己的类和资源前会先查找其父类的类和资源。虚拟机内建的类加载器叫:“bootstrap class loader”,它没有父类加载器但是serve可能作为类加载器实例的父加载器。

一个例外:按照Servlet 规范, Web App Classloader的行为和普通的ClassLoader不同,它要先去load所需的Class,不成功在交给Parent来装入(除了jdk本身的类)。

Class Loader的顺序:BootStrap Class Loader,Ext Class Loader,App Class Loader

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值