博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Eclipse 下调试Tomcat6源码(转)
阅读量:6125 次
发布时间:2019-06-21

本文共 1346 字,大约阅读时间需要 4 分钟。

  原地址:http://denger.iteye.com/blog/834121

    近期对 Tomcat 的一些原理机制产生了兴趣,于是便下载源码进行 DEBUG 来一探究竟~

    TOMCAT_6_0_18.zip 包下载地址: http://pan.baidu.com/s/1mgGcPug
    下载解压后的目录结构:
     
     很明显它是基于 ANT 来构建,直接通过

  Eclipse -> New -> Java Project form Existing Ant Buildfile 直接选择 TOMCAT_6_0_18下面的 build.xml 文件,

然后在列出来的 task 中的 target 选择 complie 即可导入工程。

    

     还没有完,他的编译还依赖了四个 jar 文件,分别是:

   ant.jar、 jaxrpc.jar 、org.eclipse.jdt.core_3.8.3.v20130121-145325.jar、wsdl4j-1.5.1.jar,需要将这四个 jar 文件引入进去。

     OK了,接下来直接在Eclipse 中的 Debug Configurations 中加入一个启动 Tomcat 的 Appliction.

具体在 Java Application 中加入Main启动项,选择刚才导入的 Tomcat 6.0项目(实际名字Bootstrap),

Main class 填写 org.apache.catalina.startup.Bootstrap  启动类,

Arguments :

    在 Program arguments 填写  start ,

    在 VM arguments 中填写 tomcat home 的路径(源码路径),如:-Dcatalina.home="E:\tomcat-src\TOMCAT_6_0_18"

如下图所示:

     
     
     配置好后,直接 Apply 并且 Debug,这时候直接启动会出现如下异常: ---此段本人没有测试
    

Java代码  
  1. java.lang.ClassNotFoundException: listeners.ContextListener  
  2.     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)  
  3.     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)    

      原因是因为在 tomcat 中的 webapps 中有一个 example 的 webapp, 在这个 app 的 web.xml 配置了 listeners.ContextListener 的监听,而这个类在它 classpath 中不存在。解决办法是将 example 直接删除,反正也不影响 debug。
      至此已经完成了 Tomcat 的部署,接下来要去开始 DEBUG了~  ........

转载于:https://www.cnblogs.com/jiaoshangsen/p/4595091.html

你可能感兴趣的文章
InfoQ趋势报告:DevOps 和云计算
查看>>
舍弃Python,为什么知乎选用Go重构推荐系统?
查看>>
在soapui上踩过的坑
查看>>
MySQL的字符集和字符编码笔记
查看>>
ntpd同步时间
查看>>
must implement java.io.Serializable hessian
查看>>
Microsoft Licenses Flash Lite for Windows Mobile Users
查看>>
HDOJ 2020 绝对值排序
查看>>
HDOJ/HDU 2560 Buildings(嗯~水题)
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
[20170628]12C ORA-54032.txt
查看>>
除以2
查看>>
高可用集群原理解析
查看>>
Nginx配置URL转向tomcat
查看>>
极客Web前端开发资源大荟萃#001
查看>>
让div固定在某个位置
查看>>
Java开发环境Docker镜像
查看>>
从无到有,WebService Apache Axis2初步实践
查看>>
任务调度(一)——jdk自带的Timer
查看>>