1. 获取源代码

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

方式二:利用svn获取源代码,先安装svn,再新建目录tomcat7, 接着在目录里执行以下命令

  1. svn co http://svn.apache.org/repos/asf/tomcat/tc7.0.x/tags/TOMCAT_7_0_35/ ./

tags目录下有不同版本的tomcat 源码,这里下载的版本是7.0.35

2. 将源码导入eclipse

    tomcat的源码是利用ant来创建和管理的。先安装ant,再执行ant
ide-eclipse,该命令执行成功后,会在tomcat7目录下生产.project和.classpath两个文件,即成为eclipse工程
了。这样你就可以将tomcat源码导入eclipse了。
     执行ant ide-eclipse时报错:

  1. BUILD FAILED build.xml:2361: The following error occurred while executing this line:
  2. BUILD FAILED build.xml:2449: Compile failed; see the compiler error output for details.

查看编译的错误日志为:

  1. build-tomcat-dbcp:
  2. [copy] Copying 64 files to E:\usr\share\java\tomcat7-deps\dbcp
  3. [move] Moving 64 files to E:\usr\share\java\tomcat7-deps\dbcp\src\java\org\apache\tomcat\dbcp
  4. [javac] Compiling 64 source files to E:\usr\share\java\tomcat7-deps\dbcp\classes
  5. [javac] warning: [options] bootstrap class path not set in conjunction with -source 1.6
  6. [javac] E:\usr\share\java\tomcat7-deps\dbcp\src\java\org\apache\tomcat\dbcp\dbcp\BasicDataSource.java:53: error: Bas
  7. icDataSource is not abstract and does not override abstract method getParentLogger() in CommonDataSource
  8. [javac] public class BasicDataSource implements DataSource {
  9. [javac]        ^
  10. [javac] E:\usr\share\java\tomcat7-deps\dbcp\src\java\org\apache\tomcat\dbcp\dbcp\DelegatingStatement.java:46: error:
  11. DelegatingStatement is not abstract and does not override abstract method isCloseOnCompletion() in Statement
  12. [javac] public class DelegatingStatement extends AbandonedTrace implements Statement {
  13. [javac]        ^
  14. [javac] E:\usr\share\java\tomcat7-deps\dbcp\src\java\org\apache\tomcat\dbcp\dbcp\DelegatingPreparedStatement.java:57
  15. : error: DelegatingPreparedStatement is not abstract and does not override abstract method isCloseOnCompletion() in Stat
  16. ement

根据日志错误推测,依赖的dbcp相关的jar版本不对。本机安装的jdk版本是1.7的,于是在本机又装了一个1.6的jdk,并修改相关环境变量让JAVA_HOME指向jdk 1.6目录。再次执行ant ide-eclipse得到了

 BUILD SUCCESSFUL
Total time: 2 minutes 57 seconds
也注意到 build-tomcat-dbcp的构建日志更新为:
  1. build-tomcat-dbcp:
  2. [copy] Copying 64 files to E:\usr\share\java\tomcat7-deps\dbcp
  3. [move] Moving 64 files to E:\usr\share\java\tomcat7-deps\dbcp\src\java\org\apache\tomcat\dbcp
  4. [javac] Compiling 64 source files to E:\usr\share\java\tomcat7-deps\dbcp\classes
  5. [javac] 注意:某些输入文件使用或覆盖了已过时的 API。
  6. [javac] 注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
  7. [javac] 注意:某些输入文件使用了未经检查或不安全的操作。
  8. [javac] 注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
  9. [jar] Building jar: E:\usr\share\java\tomcat7-deps\dbcp\tomcat-dbcp.jar
  10. [jar] Building jar: E:\usr\share\java\tomcat7-deps\dbcp\tomcat-dbcp-src.jar

因此,该问题可总结为:tomcat源码依赖的jdk版本为1.6及其以下,使用jdk1.7会导致构建失败。

       

3.  在build path里添加jar包,解决编译问题

    导入eclipse后,会发现工程tomcat7有一个红色的惊叹号,这是因为依赖的jar包没有添加到build path里导致的编译错误。参考博客 http://jackycheng2007.iteye.com/blog/1477845 中的第三步。
    遇到的另外问题,org.apache.naming.factory.webservices包下的两个类ServiceProxy,ServiceRefFactory依然有错,无法识别
  1. import javax.xml.rpc.Service;
  2. import javax.xml.rpc.ServiceException;
  3. import javax.wsdl.Definition;
  4. import javax.wsdl.Port;
  5. import javax.wsdl.extensions.ExtensibilityElement;
  6. import javax.wsdl.extensions.soap.SOAPAddress;
  7. import javax.wsdl.factory.WSDLFactory;
  8. import javax.wsdl.xml.WSDLReader;

这些类。本机依然缺少jar包,百度了下发现缺少一个web service的开发工具包 axis-bin-1_4.zip。 下载后,添加到build path里解决。

  
   题外话:ant没有maven用起来方便,maven可以管理依赖的jar,会自动从maven仓库里下载依赖,无需手动下载jar和添加build path

4. 运行

       参考博客http://jackycheng2007.iteye.com/blog/1477845 中的第四步即可

tomcat源码导入eclipse步骤的更多相关文章

  1. Tomcat源码导入eclipse的步骤

    Tomcat源码导入eclipse 一.下载源码 1.  进入Apache 官网:http://tomcat.apache.org/ 2.  在左边侧选择要下载的源码的版本. 3.  或者直接通过Ar ...

  2. tomcat源码导入eclipse

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

  3. Tomcat源码导入Eclipse测试

    想要研究下Tomcat的体系结构或者源码,最好将Tomcat的源码导入到ide中,编写实例进行代码跟踪(debug). 这里参考了网上一些资料,将自己操作过程记个流水账. 准备: 1.Tomcat源码 ...

  4. 将tomcat源码导入eclipse

    前言: 写完了socket小应用的原始版本,中间还有好多预想的功能没有实现,在写的过程中也发现了很多问题.因为前面有粗略的看过tomcat实现原理解析,知道tomcat其实也是纯java写的web服务 ...

  5. jmeter源码导入eclipse步骤

    1.新建标准java项目2.右击项目选import filesystem 将apache-jmeter-4.0整个目录勾选allow output folders for source folders ...

  6. Tomcat源码分析----eclipse中搭建源码环境

    前提:JDK,至少1.7,ant,要设置ANT_HOME环境变量,需要再classpath中增加ant的lib目录,在path变量中增加ant的bin目录 1.官网下载tomcat源码包:apache ...

  7. 将struts源码导入eclipse

    预制条件和spring源码导入eclipse中一样,下面直接给出导入eclipse的步骤. 步骤: 1. 下载struts相应版本的源码 http://struts.apache.org/downlo ...

  8. 如何将OpenTSDB源码导入eclipse

    OpenTSDB的官网上介绍了如何将OpenTSDB源码导入eclipse,官方链接,但步骤超级繁琐,还有一个简便方法,下面以导入OpenTSDB2.0.0为例. 1. 下载OpenTSDB2.0.0 ...

  9. 将Android源码导入eclipse中的方法以及编译Android源码指定模块

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/53365659 将android源码导入eclipse.androidstudio. ...

随机推荐

  1. VisualSVNServer启动失败错误处理

    VisualSVNServerServer service failed to start:     服务已返回特定的服务器错误代码:(0x8007042a)     Please check Vis ...

  2. UIActivityViewController(转)

    在iOS 6之后提供了一个分享列表视图,它通过UIActivityViewController管理.苹果设计它主要的目的是替换分享动作选单(ActionSheet),分享动作选单是出于分享目的的动作选 ...

  3. ImagXpress中如何修改Alpha通道方法汇总

    ImagXpress支持处理Alpha通道信息来管理图像的透明度,Alpha通道支持PNG ,TARGA和TIFF文件,同时还支持BMP和ICO文件.如果说保存的图像样式不支持Alpha通道,就将会丢 ...

  4. JS实现复制网页内容自动加入版权内容代码和原文链接

    JS实现复制网页内容自动加入版权内容代码和原文链接 实现代码:在body内放入如下代码即可: <script type="text/javascript"> var S ...

  5. oracle 导出表结构和数据,使用plsql

    比如说需要把A数据库里面的数据,导入到B数据库 准备工作:在B数据库中创建B数据库同名的的用户名和表空间,注意大小写必须一样. 1,导出表结构.A数据库里点击工具栏里的tools--Export Us ...

  6. 高级工具gprof、gprof2dot.py、dot

    可以研究程序性能.函数调用堆栈等,而且能用图标查看. linux环境下 C++性能测试工具 gprof + kprof + gprof2dot - 阁子 - 博客园 gprof.gprof2dot.p ...

  7. Mysql数据库知识-Mysql索引总结 mysql mysql数据库 mysql函数

    mysql数据库知识-Mysql索引总结: 索引(Index)是帮助MySQL高效获取数据的数据结构. 下边是自己整理的资料与自己的学习总结,,做一个汇总. 一.真的有必要使用索引吗? 不是每一个性能 ...

  8. Linux下命令行安装WebLogic 10.3.6

    1.创建用户useradd weblogic;创建用户成功linux系统会自动创建一个和用户名相同的分组,并将该用户分到改组中.并会在/home路径下创建一个和用户名相同的路径,比如我们创建的webl ...

  9. ectouch第十一讲 之 ECTouch 菜单里如何添加文章链接

    1.首先在 ectouch 后台添加好文章分类和文章内容(具体添加方法很简单,这里就不再赘述),然后在菜单管理里添加导航如下(链接地址的获取方法参考步骤 2):2.文章分类列表 域名/mobile/i ...

  10. BZOJ 1588:营业额统计(Splay)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1588 题意:中文题意. 思路:每一个点每一个点插入Splay,然后插入新的一个点之后,查这个节点的前 ...