48_类加载器的一个高级问题的实验分析

classloader_web

 

这是一个实验,源代码 链接:http://pan.baidu.com/s/1c0ix9UK 密码:ssvd

1、让tomcat加载MyServlet

http://localhost:8080/itcastweb/servlet/MyServlet

image

 

2、让jvm加载MyServlet

导出MyServlet.class到 D:\Program Files\Java\jdk1.8.0\jre\lib\ext\itcast_web.jar,

则java虚拟机的ExtClassLoader加载了MyServlet.class类,

MyServlet相关的类也要由ExtClassLoader加载

而D:\Program Files\Java\jdk1.8.0\jre\lib\ext路径下,不存在servlet-api.jar,

当父亲BootStrap找不到,推回给儿子ExtClassLoader也找不到HttpSerlvet时,就抛出了错误。

http://localhost:8080/itcastweb/servlet/MyServlet

image

把tomcat_home\lib\servlet-api.jar拷贝到 D:\Program Files\Java\jdk1.8.0\jre\lib\ext中,

来让JVM的ExtClassLoader加载MySerlvet和相关的HttpServlet类

itcast_web5

 

再次访问:http://localhost:8080/itcastweb/servlet/MyServlet

itcast_web4

posted @ 2015-02-05 11:03  刘江龙  阅读(258)  评论(0编辑  收藏  举报