1、安装环境

工欲善其事必先利其器,在开始工作之前,先准备好环境和工具:jdk、eclipse、并配置eclipse的svn插件、ant,具体怎么配置就不说了,网上都有。

2、下载源码

打开eclipse,新建svn资源库:http://svn.apache.org/repos/asf/tomcat,然后展开这个目录,如图所示

在tc6.0.x目录下面有许多版本,任选一个,checkout到本地就行。

3、编译源码

源码下载后,工程名字上有个红色感叹号,这是因为Eclipse找不到该项目指定的库文件。请右击该项目,在弹出菜单中选择“build path---configure build path”,在libraries选项卡里面删除两个以TOMCAT_LIBS开头的两个库文件,只保留一个JRE库文件,然后点击“OK”按钮,这时Eclipse开始编译Tomcat源代码,会有编译错误,这是因为我们没有为该项目添加编译所必须的Jar包;

到tomcat工程所在目录,把build.properties.default文件复制一份,并命名为build.properties,然后打开build.properties,找到下面这行:

base.path=/usr/share/java 
将它改为: 
base.path= tomcat工程所在目录/share 
在Tomcat编译过程中,Ant会让我们下载一些必要的依赖项目,base.path目录就是用来保存这些项目文件的,share目录必须自己创建好。

找到jdt.loc,改成jdt.loc= http://mirror.calvin.edu/eclipse/downloads/drops/R-3.2-200606291905/eclipse-JDT-3.2.zip

打开cmd.exe, cd到tomcat工程所在目录,然后运行ant download命令;

把下面的jar添加到build path里面,重新编译

ant.jar (请在ant安装目录的lib子目录中拷贝) 
commons-collections-3.1.jar (从刚才Ant下载的commons-collections-3.1子目录中拷贝) 
commons-dbcp-1.2.1.jar(从刚才Ant下载的commons-dbcp-1.2.1子目录中拷贝) 
commons-logging-1.1.jar(如果您本机没有这个jar包,请从http://commons.apache.org/downloads/download_logging.cgi处下载) 
commons-pool-1.2.jar(从刚才Ant下载的commons-pool-1.2子目录中拷贝) 
org.eclipse.jdt.core_3.2.0.v_671.jar(eclipse安装目录plugins下面可以找到)

4、在Eclipse中运行Tomcat

找到Tomcat的启动主类org.apache.catalina.startup.Bootstrap,右键run,这个时候控制台显示8005端口被占用,怎么办?打开/conf/server.xml,找到<Server port="8005" shutdown="SHUTDOWN">,把8005端口改成8006,再运行,控制台又显示8009端口被占用,找到<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />,把8009改成8008,在运行,没有报错,打开浏览器,输入http://localhost:8080,可以显示tomcat的主页了,说明源码可以运行起来了。

今天就到这里,下一步调试运行看一下。

获取tomcat源码的更多相关文章

  1. 探秘Tomcat(一)——Myeclipse中导入Tomcat源码

    前言:有的时候自己不知道自己是井底之蛙,这并没有什么可怕的,因为你只要蜷缩在方寸之间的井里,无数次的生活轨迹无非最终归结还是一个圆形:但是可怕的是有一天你不得不从井里跳出来生活,需要重新审视井以外的生 ...

  2. Tomcat源码分析

    前言: 本文是我阅读了TOMCAT源码后的一些心得. 主要是讲解TOMCAT的系统框架, 以及启动流程.若有错漏之处,敬请批评指教! 建议: 毕竟TOMCAT的框架还是比较复杂的, 单是从文字上理解, ...

  3. tomcat源码导入eclipse步骤

    1. 获取源代码 方式一:从官网http://tomcat.apache.org/download-70.cgi 直接下载,官网提供了Binary 和 Source Code两种下载方式,要研究tom ...

  4. tomcat源码导入eclipse

    1. 获取源代码 方式一:从官网http://tomcat.apache.org/download-70.cgi 直接下载,官网提供了Binary 和 Source Code两种下载方式,要研究tom ...

  5. Tomcat源码学习记录--web服务器初步认识

    Tomcat作为开源的轻量级WEB服务器,虽然不是很适合某些大型项目,但是它开源,读其源代码可以很好的提高我们的编程功底和设计思维.Tomcat中用到了很多比较好的设计模式,其中代码风格也很值得我们去 ...

  6. 【Tomcat源码学习】-1.概述

    Tomcat是用java语言开发的一个Web服务器,最近花了差不多两周时间对Tomcat 9.0源码进行了一遍学习,由于知识储备有限,也只是理解了一个大概,下面就由我来给大家分享一下我对Tomcat的 ...

  7. Tomcat 源码分析(一)——启动与生命周期组件

    写在前面的话:读Tomcat源码也有段时间了,大领悟谈不上.一些小心得记录下来,供大家参考相护学习. 一.启动流程 Tomcat启动首先需要熟悉的是它的启动流程.和初学者第一天开始写Hello Wor ...

  8. TOMCAT源码分析(转)

    前言:   本文是我阅读了TOMCAT源码后的一些心得. 主要是讲解TOMCAT的系统框架, 以及启动流程.若有错漏之处,敬请批评指教!建议:   毕竟TOMCAT的框架还是比较复杂的, 单是从文字上 ...

  9. Tomcat源码分析——Session管理分析(下)

    前言 在<TOMCAT源码分析——SESSION管理分析(上)>一文中我介绍了Session.Session管理器,还以StandardManager为例介绍了Session管理器的初始化 ...

随机推荐

  1. Vue基础汇总实践

    1)双向绑定:   <div id="app">   <p>{{message}}</p>   <input v-model=" ...

  2. 添加mysamba

    一. 复制/home/tingpan/openwrt/barrier_breaker/feeds/luci/applications文件夹下的luci-samba文件,将文件中的内容samba改为my ...

  3. DBA的规范

    DBA操作规范 1.涉及业务上的修改/删除数据,在得到业务方.CTO的邮件批准后方可执行,执行前提前做好备份,必要时可逆.   2.所有上线需求必须走工单系统,口头通知视为无效.   3.在对大表做表 ...

  4. 胖子哥的大数据之路(6)- NoSQL生态圈全景介绍

    引言: NoSQL高级培训课程的基础理论篇的部分课件,是从一本英文原著中做的摘选,中文部分参考自互联网.给大家分享. 正文:  The NoSQL Ecosystem 目录 The NoSQL Eco ...

  5. [OI向?] ubuntu下一些常用的技巧

    想起来什么就写什么吧. Ubuntu下的对拍程序 python是最为简便的. from os import system while True: system("./make > in ...

  6. 我的JdbcUtils类

    这是目录结构: 其中后面三个类都是第一个类的子类,第一个类是父类. JdbcUtils: package com.smt.db; import java.io.IOException; import ...

  7. ubuntu卸载vsftpd出错

    卸载vsftpd出错 $ sudo apt remove vsftpd Reading package lists... Done Building dependency tree Reading s ...

  8. EasyMall 项目记录-环境搭建

    一.搭建项目运行的环境 (1)修改hosts文件 更改:C:\Windows\System32\drivers\etc目录下hosts文件 添加:127.0.0.1        www.easyma ...

  9. Kibana安装及使用

    1.Kibana介绍Kibana是一个基于浏览器页面的Elasticsearch前端展示工具.Kibana全部使用HTML语言和Javascript编写的. 2.安装配置Kibana下载地址:http ...

  10. java发送http请求,内容为xml格式&&传统URI类请求

    import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.ByteArrayOutputStr ...