博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入理解Tomcat系列之二:源码调试环境搭建(转)
阅读量:6292 次
发布时间:2019-06-22

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

前言

最近对Tomcat的源码比较感兴趣,于是折腾了一番。要调试源码首先需要搭建环境,由于参考了几篇帖子发现都不怎么靠谱,最后还是折腾出来了,然而却花了足足一天的时间去搭建这个环境。发现都不是帖子的问题,主要是自己在搭建过程中忽略了一些细节,最后构建工程的时候一直失败,我也是醉了。所以本着共享的原则,把一些关键的步骤以及一些需要注意的细节写在博客中以飨读者。 

下载Tomcat7源码

下载源码有多种方式,可以通过SVN直接拷贝到本地,svn地址在

下载之后源码的目录是这样的:

源码结构

注意:要把build.properties.default改为build.properties,不然不能成功构建项目

安装ant

下载地址在,下载之后新建一个系统变量ANT_HOME,值就是ant的下载目录,比如我的电脑是D:\apache-ant-1.8.3

在开始-运行-输入ant -version,如果显示版本信息,那么就说明安装成功

编译工程

在命令窗口输入:

cd ${tomcat.source}  ant ide-eclipse

${tomcat.source}为Tomcat源码的目录,比如我的是D:\apache-tomcat-7.0.32-src

要注意的是编译源码的jdk版本要为1.6,低于这个版本将会报错,导致编译不成功。所以如果你的机器的版本高于1.6,只要换成1.6的版本就好了,你可以选择在机器上安装两个版本的jdk(我就是这么做的),把JAVA_HOME的值改为jdk1.6的目录,然后把c:\windows\system32目录下的javaw.exe、java.exe和javaws.exe三个文件删除就可以了。最后输入java -version显示是否切换jdk版本成功。

执行上述命令后,会出现编译成功的提示,最后编译成功的结构是这样的:

编译后的文件结构

其中的.myeclipse是我导入MyEclipse后产生的,其中的uml文件也是后来我新建的,编译后新增加的只有三个文件:.classpath、.project和output文件夹。

导入Eclipse

楼主使用的是Myeclipse,不过过程大体一致,主要是:

File - Import and choose Existing Projects into Workspace

导入之后会出现错误,还要新建两个变量,具体操作是:

打开eclipse的Window - Perferences ,选择Java-Build Path - Classpath Variables,然后,新增以下两个变量:  TOMCAT_LIBS_BASE The same location as the base.path setting in build.propertiesANT_HOME  版本高于1.8,位置就是ant的安装位置

base.path就是build.properties文件中的值,默认就好,当然你也可以选择自己的目录。网上说好像要设置eclipse的complier版本,不过我没有设置并没有报错。

下面是导入Myeclipse之后项目的结构:

eclipse工程结构

调试源码

要调试源码需要打开org.apache.catalina.startup.Bootstrap类,右键选择debug as java application就可以了。要调试具体的源码,只要设置一个断点,然后输入一个URL,不妨使用默认的项目examples省心,然后就可以尽情享受tomcat源码了。

更详细的参考资料,请访问官方

http://blog.csdn.net/u011116672/article/details/50994000

 

你可能感兴趣的文章
关于遮罩层无效的记录
查看>>
动态操作表格
查看>>
GOF对Builder模式的定义(转载)
查看>>
Photoshop图层混合模式计算公式大全
查看>>
ylb:创建数据库、表,对表的增查改删语句
查看>>
js正則表達式语法
查看>>
Android中Preference的使用以及监听事件分析
查看>>
线程同步 – lock和Monitor
查看>>
Java_获取当前月最后一天
查看>>
Cocos2d:使用 CCCamera 做滚动效果 (Four Ways of Scrolling with Cocos2D)
查看>>
RGB HSV HLS三种色彩模式转换(C语言实现)
查看>>
PHP变量在内存中的存储方式
查看>>
用户态和内核态的概念区别
查看>>
ANDROID 中设计模式的採用--创建型模式
查看>>
三大WEB服务器对比分析(apache ,lighttpd,nginx)
查看>>
PowerDesigner 生成的脚本取掉双引号
查看>>
读书笔记4数据的读入和保存
查看>>
Centos6.7安装docker1.7.1
查看>>
jQuery使用经验建议
查看>>
带条件Count
查看>>