前言

最近对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. Appium 的安装启动

    Appium 的安装方式根据官网提供的是使用nodejs 安装,但是官方给出了三种方法 参考网址: appium下载地址: https://bitbucket.org/appium/appium.ap ...

  2. 利用VS2005进行dump文件调试(17篇博客)

    前言:利用drwtsn32或NTSD进行程序崩溃处理,都可以生成可用于调试的dmp格式文件.使用VS2005打开生成的DMP文件,能很方便的找出BUG所在位置.本文将讨论以下内容: 1.  程序编译选 ...

  3. Linux 安装Redis全过程日志

    wget http://download.redis.io/redis-stable.tar.gz tar xvzf redis-stable.tar.gz cd redis-stable make ...

  4. android launcher开发之图标背景以及默认配置

    1:然后我自己看了一下桌面图标的载入过程: 桌面第一次载入时是默认读取一个xml配置文件,完毕配置工作.这个配置文件在Launcher文件夹下, 路径是:\Launcher\res\xml\defau ...

  5. Codeforces Round #306 (Div. 2) D.E. 解题报告

    D题:Regular Bridge 乱搞. 构造 这题乱搞一下即可了.构造一个有桥并且每一个点的度数都为k的无向图. 方法非常多.也不好叙述.. 代码例如以下: #include <cstdio ...

  6. java大牛list

    1 Java的未来 Java能干什么.不能干什么,一开始就要搞清楚.这对于成为一个纯种的Java程序猿至关重要. 2 构建Java运行环境 Java运行在服务器,服务器都是Linux系统,对于真正程序 ...

  7. js获取手机型号和手机操作系统版本号

    1.js 判断IOS版本号 先来观察 iOS 的 User-Agent 串: iPhone 4.3.2 系统:Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 l ...

  8. 了解sota字符界面(章节4.1)

    4 SOTA操作 4.1 SOTA字符界面 sotaCC是字符界面管理sota系统程序 . 在/.../sota/bin/目录下,启动sotaCC.在终端的该目录下输入指令“./sotaCC”,启动s ...

  9. vc 加载bmp位图并显示的方法

    方法一.显示位图文件 HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,_T(“xxx.bmp”),Image_Bitmap,0,0,Lr_CreateDibSectio ...

  10. java面向对象下:Java数据库编程

    19.Java数据库编程: JDBC概述:        JDBC(Java Database Connection)是java中提供的一套数据库编程API,它定义了一套用来访问数据库的标准Java类 ...