• 深入理解Tomcat系列之二:源码调试环境搭建(转)


    前言

    最近对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:windowssystem32目录下的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之后项目的结构:

    eclipse工程结构

    调试源码

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

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

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

  • 相关阅读:
    sencha touch 入门系列 (四)sencha touch 新建项目目录结构解析
    sencha touch 入门系列 (三)sencha touch 项目创建
    sencha touch 入门系列 (二)sencha touch 开发准备
    sencha touch 入门系列 (一)sencha touch 简介
    Android Weak Handler:可以避免内存泄漏的Handler库
    Android 中的冷启动和热启动
    Android4.0以上版本比较靠谱的获取手机屏幕分辨率的方法
    Android studio 获取每次编译apk时的日期
    android瓦片地图技术研究
    Android中的各种访问权限Permission含义
  • 原文地址:https://www.cnblogs.com/softidea/p/5384401.html
Copyright © 2020-2023  润新知