Tomcat源码导入eclipse

一、下载源码

1、  进入Apache 官网:http://tomcat.apache.org/

2、  在左边侧选择要下载的源码的版本。

3、  或者直接通过Archives进入源码目录

4、  源码目录如图,选择需要的版本,

5、  进入相应的源码目录下载相应的源码,我的演示下载的是8.026版本的源码。

二、ANT编译源码

如果没安装ant,请先安装ant,ant是一款编译工具。

编译步奏:

1、  解压源码压缩包

2、  设置依赖包的下载位置,把上步解压的目录中的build.properties.default的文件名去掉后缀default,即重命名为build.properties。在build.properties文件中找到base.path配置项,把该配置项的值改为你希望依赖包下载后存放的位置路径。

3、  Ctrl+R打开CMD窗口,进入第一步解压的后的目录:apache-tomcat-8.0.26-src,

4、  运行命令:ant download,该命令会下载tomcat编译所需要的包。不知道什么原因,我执行这一步并没有成功(应该不需要执行这一步,但网上的很多资料都介绍了这一步),但是不要着急,继续下一步。

5、  运行命令:ant,运行该命可能会花一定的时间,因为这一步需要下载一些依赖包,这些依赖包可能在国外的服务器上,所以下载比较慢,同时还需要编译,编译是比较耗时的。在这一步如果命令运行到某处长时间不动了,可以通过Ctrl+C退出,然后重新运行ant命令;如果编译失败,可以重新运行ant命令编译,直到提示编译成功。

6、  编译成功后会在目录:apache-tomcat-8.0.26-src,多出一个新的名字为output的目录。这就是存放编译结果的目录。

三、导入tomcat源码到eclipse

1、  在eclipse下新建一个project。命名为tomcat8

2、  把解压目录中的java和test两个源码目录import到新建的tomcat8工程中。注:两个目录不能同时import。

3、  把java和test两个目录标记为source folder,右键选择文件夹->Build Path->Use as Source Folder。标记为source folder后两个代码目录都出现了错误。这是因为缺少依赖包。

4、导入依赖包:
ant.jar:在你安装的ant目录:ANT_HOME/lib下。
jaxrpc.jar:在eclipse下的/plugin/ javax.xml.rpc_xxx(版本号)/lib/目录下。
org.eclipse.jdt.core_3.10.2.v20150120-1634.jar:在eclipse的plugin目录下。Eclipse版本不同,名字可能不同。
wsdl4j-1.5.1.jar:可以从网上下。
      右键tomcat8->Build Path->Configuration Build Path。导入上面的几个包,java目录下就没有错了,如果test目录下还有错,可以注释掉错误的文件。


5、  经过上面的步骤,找到org.apache.catalina.startup下的Bootstrap启动tomcat源码,这是不成功。因为当前项目路径下没有lib和conf这两个文件夹,从而找不到服务器配置文件server.xml,当然也就不能实例化服务器了。解决方法:

a、  把前面编译生成的output目录下的/build/下的lib和conf两个目录拷贝到tomcat下,这时就可以直接启动了。

b、  二种方法就是添加VM参数,指定这两个文件夹的具体路径,用VM的-D参数指定catalina.home属性值为具体的路径,具体方法如下:

Run as -> Run Configuration... - > Arguments -> VM arguments中设置:

-Dcatalina.home=” E:\Java\Tomcat\apache-tomcat-8.0.26-src\output\build”,然后Run就可以启动了。

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

  1. tomcat源码导入eclipse步骤

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

  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. 将struts源码导入eclipse

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

  6. 如何将OpenTSDB源码导入eclipse

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

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

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

  8. spring源码解析——spring源码导入eclipse

    一.前言     众所周知,spring的强大之处.几乎所有的企业级开发中,都使用了spring了.在日常的开发中,我们是否只知道spring的配置,以及简单的使用场景.对其实现的代码没有进行深入的了 ...

  9. 将github上的项目源码导入eclipse详细教程

    将github上的项目源码导入eclipse详细教程 学习了: http://blog.csdn.net/itbiggod/article/details/78462720

随机推荐

  1. easyUI-增删改查

    页面整体效果 首先是页面层: 因为数据中涉及到Date类型的字段,所以在一开始先做了一个拼装装换日期格式的方法 因为在easyUI的JSON解析的Data是一个long型的数字长串,关于解析的数字长串 ...

  2. android——从零开始

     一.JDK(不用安装)1.下载适合的jdk2.配置环境变量 添加一系统边=变量       JAVA_HOME=D:\Java\jdk1.8.0_91      CLASSPATH=.;%JAVA_ ...

  3. 分组统计并计算每组数量sql

    有 字段A 和B比如数据如下A  B1  21  31  4 2  22  3 统计出的sql结果: A   count 1   3 2   2 select a,count(b) from t gr ...

  4. spring mvc异常统一处理(ControllerAdvice注解)

    首先我的项目是一个为移动端提供的json数据的,当后台报错时如果为移动端返回一个错误页面显得非常不友好,于是通过ControllerAdvice注解返回json数据. 首先创建一个异常处理类: pac ...

  5. 纯Java配置使用slf4j配置log4j

    工程目录如下 代码里面用的是slf4j,但是想要用log4j来管理日志,就得添加slf4j本来的jar,然后添加log4j和slf4j箱关联的jar即可. 如果是maven项目的话添加下面的依赖即可 ...

  6. ubuntu下Pycharm安装及配置

    从知乎里看到了Pycharm的介绍,感觉还不错,记录下今天的安装过程 1.从http://www.jetbrains.com/pycharm/download/下载最新的Pycharm 2.在终端中进 ...

  7. Sharepoint client model 中出现Cannot invoke HTTP DAV request. There is a pending query 的解决办法

    由于近期在某项目中使用sharepoint client 对象模型做项目 在sharepoint 2010环境下正常,但迁移到sharepoint 2013后报错,提示如下 Cannot invoke ...

  8. Objc Block

    ref1 一.__block 的使用 说明: 在 block 内只能读取在同一个作用域的变数而且没有办法修改在 block 外定义的任何变数,此时若我们想要这些变数能够在 block 中被修改,就必须 ...

  9. 用户引导页--- ScrollView的使用

    一.首先第一步,写好用户轮播页的viewController,比如叫做LVUserGuideVC,关键代码是配置和scrollView和pageControl. (1)scrollView的设置 se ...

  10. linux 技巧:使用 screen 管理你的远程会话

    你是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器?你是不是经常为一些长时间运行的任务而头疼,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远程终 ...