`
lzh166
  • 浏览: 293978 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于类加载器的一个应用测试

阅读更多
新建一个web项目然后新建一个servlet,在servet的doGet方法中我们循环的遍历出所有的类加载器(由低到高)
ClassLoader loader = this.getClass().getClassLoader();
		while(loader != null){
			out.println(loader.getClass().getName()+"<br>");
			loader = loader.getParent();
		}


接着将这个web项目部署到web应用服务器上(tomcat5.0),访问结果如下:
WebappClassLoader
StandardClassLoader
AppClassLoader
ExtClassLoader
好了,通过结果我们可以看出它是由WebappClassLoader加载器加载的,其上面还有四个类加载器,其中有三个是jdk提供的(BootStrap是内嵌在虚拟机中),下面我们就将servlet打成.Jar包放到我们的tomcat所用的jdk安装目录下的jre/lib/ext/下中让
ExtClassLoader去加载,以上操作完成后下面我们就再次访问这个servlet
结果出错了。http500错误!
下面我们分析一下出错原因:当ExtClassLoader加载该serlvet程序的时候,会首先根据类加载器的委派机制交给它的父亲(BootStrap)去加载,由于它父亲没有找到该类,所以就又交给它来加载,当他加载这个servlet的时候,他发现我们的这个servlet类extends HttpServlet所以它就又去加载httpservlet类,结果确没有找到,所以就报错了,因为这个jar包类是由tomcat提供的,因此我们需要拷贝httpservlet类到我们ext目录下,把tomcat lib中的servlet-api.jar拷贝到ext目录下面就可以解决这个问题了。
下面是关于分析原因图:




  • 大小: 32 KB
分享到:
评论

相关推荐

    测试类加载器应用

    mvn exec:java -Dexec.mainClass=com.example.test.App1 mvn exec:java -Dexec.mainClass=com.example.test.App2

    ClassPreloader:通过生成包含所有自动加载文件的单个PHP文件来优化类加载性能

    例如,如果您的应用程序对每个请求执行相同的引导程序代码,则可以生成一个预加载器(此工具的编译输出),以减少一遍又一遍地自动加载所需类的成本。 它实际上是做什么的 该工具侦听自动加载的每个文件,创建文件...

    powermock源码学习 支持模拟静态方法、构造函数、final类和方法、私有方法以及移除静态初始化器的模拟工具

    PowerMock的核心功能在于其能够通过提供定制的类加载器和应用一些字节码操作技巧,实现对静态方法、构造方法、私有方法和final方法的模拟。例如,在进行单元测试时,有时候我们并不希望测试数据进入实际的数据库,...

    单元测试模拟框架PowerMock.zip

    通过提供定制的类加载器以及一些字节码篡改技巧的应用,PowerMock 现了对静态方法、构造方法、私有方法以及 Final 方法的模拟支持,对静态初始化过程的移除等强大的功能。因为 PowerMock 在扩展功能时完全采用和被...

    day020-继承加强和设计模式代码和笔记.rar

    由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用, 所以 不允许直接通过引用进行操作。 2. 拓展类加载器(Extension classLoader): 扩展类加载器是...

    Spring3.x企业应用开发实战(完整版) part1

    7.2.2 一个简单的注解类 7.2.3 使用注解 7.2.4 访问注解 7.3 着手使用@AspectJ 7.3.1 使用前的准备 7.3.2 一个简单的例子 7.3.3 如何通过配置使用@AspectJ切面 7.4 @AspectJ语法基础 7.4.1 切点表达式函数 7.4.2 在...

    网软志成分类信息网站系统.net官方商业版

    一个建立分类信息网站的智能建站系统,也是一个自助建站的分类信息网站程序商业版。分类网站管理系统商业版,建立行业级分类信息网站的史上最强大分类信息建站系统,应用本网站系统注册商家可开店铺,可发布分类信息,...

    Spring.3.x企业应用开发实战(完整版).part2

    7.2.2 一个简单的注解类 7.2.3 使用注解 7.2.4 访问注解 7.3 着手使用@AspectJ 7.3.1 使用前的准备 7.3.2 一个简单的例子 7.3.3 如何通过配置使用@AspectJ切面 7.4 @AspectJ语法基础 7.4.1 切点表达式函数 7.4.2 在...

    LabVIEW高级编程与虚拟仪器工程应用

    《LabVIEW高级编程与虚拟仪器工程应用(修订版)》适用有一定LabVIEW编程基础的测控工程技术人员,帮助其搭建高级技术框架,积累开发经验;同时也可作为本科生毕业设计、研究生完成课题和工程技术人员开发测控项目的...

    kaggle疟疾细胞深度学习方法进行图像分类

    它使用了深度学习框架PyTorch来构建、训练和评估一个逻辑回归模型,适用于医学研究人员和数据科学家在图像识别领域的应用。 主要功能包括: 数据预处理与加载: 数据集自动分割为训练集和测试集。 图像数据通过...

    java6.0源码-agentsmith:AgentSmith是一个Java代理,可在您的应用程序运行时重新加载您的类。它就像JRebel,只

    是代理实现、文件监视器和(可选)代理加载器的组合。 Smith 提供的功能通常被称为“热插拔”:与热插拔的区别在于您不需要在调试模式下启动您的 jvm(以及您的容器)。 Smith 是一个纯 Java 应用程序,它只监视您...

    python毕业设计-基于pytorch的农作物病虫害识别分类项目Web应用程序(源码+数据集+文档)

    构建模型:使用PyTorch构建一个深度学习模型,如卷积神经网络(CNN),用于识别农作物病虫害。可以使用现有的模型架构,如ResNet、VGG等,也可以根据实际情况自定义模型。 模型训练:使用训练集对模型进行训练。...

    超级有影响力霸气的Java面试题大全文档

    finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 16、sleep() 和 wait() 有什么区别? sleep是线程类(Thread)...

    vc++ 应用源码包_1

    操作大文件,自定义了一个操作大文件的类,并进行了测试。 chapter7 实现了声音录制等功能。 CHtmlViewProjV2 详细演示了HtmlView的使用与HtmlView事件站点拦截的实现、js调用。 CIVStringSet_Demo 自定义了一个...

    hermgen-demo:HermGen的演示应用程序

    所有演示应用程序(以及其在test文件夹下的测试应用程序)必须通过-Djava.system.class.loader=com.hazelcast.hermgen.HermGenDistributedClassLoader作为系统类加载器与HermGenDistributedClassLoader一起运行。...

    import:惰性模块加载器

    我需要的是一个依赖项加载器,它检查DOM中是否存在模块,或者是否像触摸事件之类的给定条件为真,并仅在给定条件为真时才加载依赖项。 就是这样。 可以将其视为Web应用程序的主干。 请继续阅读以了解import.js的...

    Android应用程序开发教程PDF电子书完整版、Android开发学习教程

    • 内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或 者共享它们自己的数据 • 资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局...

    vc++ 应用源码包_2

    操作大文件,自定义了一个操作大文件的类,并进行了测试。 chapter7 实现了声音录制等功能。 CHtmlViewProjV2 详细演示了HtmlView的使用与HtmlView事件站点拦截的实现、js调用。 CIVStringSet_Demo 自定义了一个...

    vc++ 应用源码包_6

    操作大文件,自定义了一个操作大文件的类,并进行了测试。 chapter7 实现了声音录制等功能。 CHtmlViewProjV2 详细演示了HtmlView的使用与HtmlView事件站点拦截的实现、js调用。 CIVStringSet_Demo 自定义了一个...

    vc++ 应用源码包_3

    操作大文件,自定义了一个操作大文件的类,并进行了测试。 chapter7 实现了声音录制等功能。 CHtmlViewProjV2 详细演示了HtmlView的使用与HtmlView事件站点拦截的实现、js调用。 CIVStringSet_Demo 自定义了一个...

Global site tag (gtag.js) - Google Analytics