前言

最近对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.properties
ANT_HOME 版本高于1.8,位置就是ant的安装位置

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

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

调试源码

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

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

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

深入理解Tomcat系列之二:源码调试环境搭建(转)的更多相关文章

  1. Tomcat源码调试环境搭建

    我们一般都是为了解决某个问题,才去看源码的.Java体系就是这点好处,源码唾手可得.遇到问题,最后的解决方法总是可以从源码中找到. 参考了网上的文章,过程整理如下: 1. 下载和导入 官网下载编译好的 ...

  2. 如何搭建自己的SpringBoot源码调试环境?--SpringBoot源码(一)

    1 前言 这是SpringBoot2.1源码分析专题的第一篇文章,主要讲如何来搭建我们的源码阅读调试环境.如果有经验的小伙伴们可以略过此篇文章. 2 环境安装要求 IntelliJ IDEA JDK1 ...

  3. 【曹工杂谈】Maven源码调试工程搭建

    Maven源码调试工程搭建 思路 我们前面的文章<[曹工杂谈]Maven和Tomcat能有啥联系呢,都穿打补丁的衣服吗>分析了Maven大体的执行阶段,主要包括三个阶段: 启动类阶段,负责 ...

  4. 基于Eclipse IDE的Ardupilot飞控源码阅读环境搭建

    基于Eclipse IDE的Ardupilot飞控源码阅读环境搭建 作者:Awesome 日期:2017-10-21 需准备的软件工具 Ardupilot飞控源码 PX4 toolchain JAVA ...

  5. Spark源码分析环境搭建

    原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3868718.html 本文主要分享一下如何构建Spark源码分析环境.以前主要使用eclipse来阅读源 ...

  6. 【转】Linux(ubuntu14.04)上编译Android4.4源码的环境搭建及编译全过程

    原文网址:http://jileniao.net/linux-android-building.html sublime text让我伤心.本来很信任sublime text的自动保存功能,之前使用一 ...

  7. Hadoop源码阅读环境搭建(IDEA)

    拿到一份Hadoop源码之后,经常关注的两件事情就是 1.怎么阅读?涉及IDEA和Eclipse工程搭建.IDEA搭建,选择源码,逐步导入即可:Eclipse可以选择后台生成工程,也可以选择IDE导入 ...

  8. 详解Tomcat系列(一)-从源码分析Tomcat的启动

    在整个Tomcat系列文章讲解之前, 我想说的是虽然整个Tomcat体系比较复杂, 但是Tomcat中的代码并不难读, 只要认真花点功夫, 一定能啃下来. 由于篇幅的原因, 很难把Tomcat所有的知 ...

  9. [Tomcat源码分析] Eclipse中搭建Apache Tomcat源码调试环境

    网上很多文章都推荐使用Ant下载编译,但本地实践中屡屡失败,无法下载. 后来参考 https://blog.csdn.net/xiongyouqiang/article/details/7894107 ...

随机推荐

  1. 环保创业的可行之道——Leo鉴书上66

    近2年,我一直在关注不同企业的发展历程,国内的国外的.看他们成功其中的共性与特性.<蚯蚓创业记>无疑给我开了扇窗--环保企业的怎样发展与壮大.读者还能从书里读出普通年轻人坚持自己梦想最终得 ...

  2. linux命令:Linux命令大全

    Linux命令大全 http://man.linuxde.net/

  3. PHP学习之-1.2 认识PHP脚本标识

    想在代码中实现PHP代码非常简单,如下面代码 <?php echo "和我一起学习php吧"; ?> 就像你在编写javascript脚本中需要写<script& ...

  4. mysql 结果集合切换

    结果集A: 转换成为结果集B: mysql中实现例如以下: SELECT a.biz_date, CASE WHEN a.`event` = 'downClick' THEN a.uv END AS ...

  5. Python 技巧

    1.根据路径导入模块 如果想引用指定路径下的某个模块,则需要使用sys.path.append("module_directory") 来把这个路径添加到sys下,这就涉及到Pyt ...

  6. 修改XPMenu让ToolButton在Down=True时正确显示

    XPMenu是一个不错的程序界面效果控件,但它也存在不少不足之处.我最近又对它作了一点修改. 原因是我在程序里有一个ToolButton,其Style=tbsButton,当Down=True时,XP ...

  7. VIM 用正则表达式

    VIM 用正则表达式 批量替换文本,多行删除,复制,移动 在VIM中 用正则表达式 批量替换文本,多行删除,复制,移动 :n1,n2 m n3     移动n1-n2行(包括n1,n2)到n3行之下: ...

  8. 使用 PyCrypto 进行 AES/ECB/PKCS#5(7) 加密

    东篱 使用 PyCrypto 进行 AES/ECB/PKCS#5(7) 加密 2013/06/05 · tech PyCrypto 是流行的 Python 加密/解密库.但是其 AES 的 ECB 模 ...

  9. Java中ArrayList和LinkedList差别

    一般大家都知道ArrayList和LinkedList的大致差别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构.  2.对于随机訪问get和set.A ...

  10. [黑马程序员] I/O

    ---------------------- ASP.Net+Android+IO开发..Net培训.期待与您交流! ---------------------- 0. IO流概述: Java对数据的 ...