最近有了看源码的冲动,刚把jvm虚拟机规范看了一遍,想借着看tomcat源码的机会,顺便实操下jvm虚拟机的一些东西,这样就有了搭建tomcat源码运行环境的念头。对着​​​​这篇文章给的指引,经过一番小折腾,还算顺利的搭建好了tomcat的环境,其中有些地方跟博客中讲的有点出路。下面是搭建过程。

 1.Tomcat源码下载

​http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.53/src/apache-tomcat-7.0.53-src.zip​

2、安装ant,配置环境变量

​http://url.cn/PSFnLC​

第三部:导入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

导入后就清爽了!

注意:这里在ant官网下载也可以。

3、eclipse准备

下载适当版本的eclipse就可以了

4、ant编译tomcat源码(跟导入到eclipse没什么关系)

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

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

 4.2)要让ant工作起来,我们还要将apache-tomcat-7.0.53-src中的build.properties.default重命名为build.properties,

并且打开它,修改base.path=E:/users/pengsy/software/basepath。这里特别要注意路径的写法,不是“\”而是“/”,否则运行ant会报错“java.lang.IllegalArgumentException: Malformed \uxxxx encoding”。

 4.3)修改配置文件build.xml,去掉2910行的httpusecaches="${trydownload.httpusecaches}",这点是原来那篇博客里面没有的。

 4.4)等依赖项目下载好后,就可以编译tomcat了。执行命令:ant。(这里注意使用jdk6编译,并且是jdk6的运行时)当编译完成后,我们可以查看目录apache-tomcat-7.0.53-src,可以发现里面多了一个文件夹:output。output文件夹的结构如下:


Eclipse导入Tomcat源码_eclipse


 

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

5、将tomcat源码导入eclipse

第一步:

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

第二步:

import->file system

在​Eclipse导入Tomcat源码_tomcat_02

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

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

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

Eclipse导入Tomcat源码_tomcat_03

这里很奇怪,我选择的test没有在工程的目录结构中显示出来。(ant命令运行成功之后,才会有test目录)

第三步:导入jar包。

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

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

java中需要:

 ​Eclipse导入Tomcat源码_eclipse_04

同时,JDTCompiler用到了jdk1.8的东西,我的做法是直接屏蔽出错代码。

导入后就清爽了!

第四步:

在eclipse中启动tomcat。

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

run as:在Arguments的VM arguments中设置(注意:在catalina.home指定的目录中,请事先创建conf目录,以及在该目录下放置server.xml文件,否知tomcat启动不起来)

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

然后就可以启动了!


Eclipse导入Tomcat源码_jar_05


注意:这里仅代表启动成功,还不能对外提供访问。