想要研究下Tomcat的体系结构或者源码,最好将Tomcat的源码导入到ide中,编写实例进行代码跟踪(debug)。

这里参考了网上一些资料,将自己操作过程记个流水账。

准备:

1.Tomcat源码下载

这个里下载tomcat-6.0.33源码。

2.ant安装,用于编译tomcat的源码。

ant下载解压后将其bin添加到系统环境path中。

3.IDE——选用Eclipse3.7。

=================================

第一步:

解压Tomcat源码,例如解压到D:\tomcat\apache-tomcat-6.0.33-src

第二步:

2.1)使用ant编译tomcat源码,在编译之前需要下载相关的依赖项目。我们并不知道编译需要哪些依赖项目,怎么办?

让ant来帮忙吧!我们只需要准备一个存放这些依赖项目的地方,例如d:\tomcat\basepath

2.2)要让ant工作起来,我们还要将apache-tomcat-6.0.33-src文件夹中的build.properties.default重命名为build.properties,

并且打开它,修改base.path=d:\tomcat\basepath

2.3)下载依赖项目,进入命令控制台,进入目录D:\tomcat\apache-tomcat-6.0.33-src,执行命令:ant download

2.4)等依赖项目下载好后,就可以编译tomcat了。执行命令:ant。当编译完成后,我们可以查看目录D:\tomcat\apache-tomcat-6.0.33-src

可以发现里面多了一个文件夹:output

output文件夹的结构如下:

我们会发现这个结构和从安装包里解压出来的tomcat结构一致。

进入bin,启动tomcat成功,就说明——ant编译tomcat成功了!

=====================================

将tomcat源码导入eclipse。

第一步:

在eclipse里新建一个java项目,例如:tomcat6。

第二步:

import->file system

在From directory选择tomcat源码,选择java和test(如果你需要测试的话选择test),如下图:

在into folder中选择我们刚新建的tomcat6,finish。

note:将java、test设置成source folder,java build path ->Source->Add folder...->选择java和test。

现在项目结构如下图所示:

第三部:导入jar包。

上面那些不爽的红叉是因为缺少jar的原因,我们现在需要那些jar包呢?

test需要junit.jar,这个直接用eclipse里面的即可。

java中需要:

  • ant.jar
  • jaxrpc.jar
  • org.eclipse.jdt.core_3.3.1.v_780_R33x.jar
  • wsdl4j-1.5.1.jar

导入后就清爽了!

第四步:

在eclipse中启动tomcat。

找到类:org.apache.catalina.startup包中的Bootstrap类。

run as:在Arguments的VM arguments中设置

-Dcatalina.home="d:\output\build"

然后就可以启动了!

==========================================

问题:

为什么要设置-Dcatalina.home="d:\output\build"?

首先说明output是什么——它就是ant编译出来的output文件夹,大家可以试试删除里面的东西看还是否可以成功启动。

如果不配置这个参数又会发生什么情况呢?删除-Dcatalina.home="d:\output\build",报错:

2011-10-20 14:49:35 org.apache.catalina.startup.ClassLoaderFactory validateFile

警告: Problem with directory [D:\myWorkSpace\tomcat6\lib], exists: [false], isDirectory: [false], canRead: [false]

2011-10-20 14:49:35 org.apache.catalina.startup.ClassLoaderFactory validateFile

警告: Problem with directory [D:\myWorkSpace\tomcat6\lib], exists: [false], isDirectory: [false], canRead: [false]

2011-10-20 14:49:35 org.apache.catalina.startup.Catalina load

警告: Can't load server.xml from D:\myWorkSpace\tomcat6\conf\server.xml

2011-10-20 14:49:35 org.apache.catalina.startup.Catalina load

警告: Can't load server.xml from D:\myWorkSpace\tomcat6\conf\server.xml

2011-10-20 14:49:35 org.apache.catalina.startup.Catalina start

严重: Cannot start server. Server instance is not configured.

从中可以看出在项目的根目录下没有lib文件夹,没有conf文件夹,conf中没有server.xml,从而不能实例化server。

那么按照他的提示做,在启动就ok了!

关于安装tomcat时配置CATALINA_HOME和CATALINA_BASE的作用,请大家指点。

Eclipse导入Tomcat源码(转)的更多相关文章

  1. eclipse导入tomcat源码

    我的开发环境:windows7  64位 一.官网下载tomcat源码.在此奉上一站地址:http://archive.apache.org/dist/tomcat/: 二.编译源码生成.jar文件: ...

  2. Eclipse 导入 Tomcat 源码

    我的环境:Win10,Eclipse 4.8.0 Photon,JDK 10.0.2   1.下载Tomcat源码 我下载的是:apache-tomcat-9.0.12-src.zip 下载地址:ht ...

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

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

  4. Eclipse导入Zookeeper源码Version2017.11.3

    将Zookeeper源码导入Eclipse, Zookeeper源码需要使用ant构建后才能导入Eclipse, 和Solr的源码一样也是使用ant构建的, 大部分可以参考Eclipse导入Solr源 ...

  5. Eclipse导入Hadoop源码项目及编写Hadoop程序

    一 Eclipse导入Hadoop源码项目 基本步骤: 1)在Eclipse新建一个java项目[hadoop-1.2.1] 2)将Hadoop压缩包解压目录src下的core,hdfs,mapred ...

  6. eclipse导入Java源码

    eclipse导入Java源码 下载源码包(一般jdk都自带了, 我的没有) src.zip eclipse -> window -> preferences -> JAVA -&g ...

  7. Hadoop1.x目录结构及Eclipse导入Hadoop源码项目

    这是解压hadoop后,hadoop-1.2.1目录 各目录结构及说明: Eclipse导入Hadoop源码项目: 注意:如果没有ant的包可以去网上下,不是hadoop里面的. 然后如果通过以上还报 ...

  8. Eclipse导入Elasticsearch源码

    Eclipse导入Elasticsearch源码的步骤, 基于Elasticsearch 6.2.2的源码版本. 1.安装JDK1.9 Elasticsearch 6.2.2需要JDK1.9编译,否则 ...

  9. eclipse 导入tomcat7源码

    导入tomcat的源码其实说简单也不简单,说不简单也简单,主要还是环境问题,中间花费了我很多时间,网上找了很多都没什么用,参考一些文章,然后自己慢慢摸索出来的. 环境:(1)jdk:jdk1.6.0_ ...

随机推荐

  1. 【java规则引擎】之Drools之Rete算法

    一:规则引擎--->规则引擎的核心是Pattern Matcher(模式匹配器).不管是正向推理还是反向推理,首先要解决一个模式匹配的问题.--->对于规则的模式匹配,可以定义为: 一个规 ...

  2. 面向amd64的XXX与与项目的目标平台“x86”不兼容

    打开IIS服务器,选择应用程序池,设置中,有一个打开32位程序,选择FALSE,如果开启,在64位下就会出错.一般关闭

  3. Razor 视图引擎 – ASP.NET MVC 4 系列

           Razor 视图引擎是 ASP.NET MVC 3 开始扩展的内容,并且也是默认视图引擎.        Razor 通过理解标记的结构来实现代码和标记之间尽可能顺畅的转换.下面的例子演 ...

  4. Docker 容器部署 Consul 集群

    Docker 容器部署 Consul 集群 一.docker安装与启动1.1安装docker[root@localhost /]# yum -y install docker-io 1.2更改配置文件 ...

  5. EnumRemarkAttribute,获取属性值

    首先自定义一个RemarkAttribute [html] view plain copy using System;  using System.Collections.Generic;  usin ...

  6. AT Tool --- android手机发送at指令

    之前网上也有一款类似的软件,估计是华为内部人员开发的,不过很变态,不但只支持华为的几款手机,而且只能发一条AT命令,然后就不让你发了:所以很气愤,今天花了一天时间自己写了这么款程序,而且是支持所有An ...

  7. [转]''\\=DevExpress 中 汉化包 汉化方法

    [DevExpress]DevExpress 中 汉化包 汉化方法 2016-02-17 21:13 1781人阅读 评论(0) 收藏 举报  分类: DevExpress(24)  版权声明:本文为 ...

  8. VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径

    原文链接:http://www.cnblogs.com/lidabo/archive/2012/05/29/2524170.html 说明 $(RemoteMachine) 设置为“调试”属性页上“远 ...

  9. nodejs单元测试

    前言: 之前一直听说过单元测试,但是具体怎么做,也没有深入研究,感觉测试是一件很麻烦的事,花费时间.可能是自己太懒了,一看到测试那么多陌生的东西就不想弄了. 然后一拖再拖,直到最近,换了一家公司,然后 ...

  10. PHP面向对象的魔术方法.png(不间断更新)