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

Eclipse 下调试Tomcat6源码

阅读更多
    近期对 Tomcat 的一些原理机制产生了兴趣,于是便下载源码进行 DEBUG 来一探究竟~
    tomcat6.0.29 Source ZIP 包下载地址: Tomcat6.0.29 Source Download 
    下载解压后的目录结构:
    

     很明显它是基于 ANT 来构建,直接通过 Eclipse -> New -> Java Project form Existing Ant Buildfile 直接选择 apache-tomcat-6.0.29-src 下面的 build.xml 文件,然后在列出来的 task 中的 target 选择 complie即可导入工程。
    

     还没有完,他的编译还依赖了四个 jar 文件,分别是: ant.jar、 jaxrpc.jar 、org.eclipse.jdt.core_3.3.1.v_780_R33x.jar、wsdl4j-1.5.1.jar,需要将这四个 jar 文件引入进去(已经打包在附件中)。
     OK了,接下来直接在Eclipse 中的 Debug Configurations 中加入一个启动 Tomcat 的 Appliction. 具体在 Java Application 中加入Main启动项,选择刚才导入的 Tomcat 6.0项目,Main class 填写 org.apache.catalina.startup.Bootstrap  启动类, 然后选择 Arguments ,在 Program arguments 填写  start , 在 VM arguments 中填写 tomcat home 的路径,如:-Dcatalina.home="/Users/denger/Workspaces/Java/opensource/apache-tomcat-6.0.29-src/。 如下图所示:
    
    

     配置好后,直接 Apply 并且 Debug,这时候直接启动会出现如下异常:
    
java.lang.ClassNotFoundException: listeners.ContextListener
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)  

      原因是因为在 tomcat 中的 webapps 中有一个 example 的 webapp, 在这个 app 的 web.xml 配置了 listeners.ContextListener 的监听,而这个类在它 classpath 中不存在。解决办法是将 example 直接删除,反正也不影响 debug。

      至此已经完成了 Tomcat 的部署,接下来要去开始 DEBUG了~  ........
      
  • 大小: 48.4 KB
  • 大小: 68.3 KB
  • 大小: 36.7 KB
  • 大小: 41 KB
7
0
分享到:
评论
6 楼 fl_zxf 2015-01-19  
顶一个
5 楼 从此醉 2014-05-27  
这个卡了我好久,不用ant,原来如此简单! 多谢
4 楼 dansam 2014-05-13  
感谢分享!
3 楼 zhangyu84849467 2013-07-23  
真心感谢你
2 楼 java_7 2012-08-17  
1 楼 luluzui 2011-08-16  
大哥,你可帮了我好大的忙啊。
我被这个问题困惑了几个礼拜了

谢谢谢谢了    

相关推荐

Global site tag (gtag.js) - Google Analytics