一、下载、安装、配置
1、 JDK 下载oracle或者IBM JDK 1.6版本
2、 ANT http://ant.apache.org
3、 Myeclipse http://www.eclipse.org/downloads
4、 安装这里不再详细说!Tomcat的运行需要用到Ant。
5、 添加环境变量JAVA_HOME和ANT_HOME。将%ANT_HOME%\bin添加到PATH中
6、 之所以用Myeclipse是因为Tomcat中用到了javaee.jar包的类,如果用eclipse的话还要单独下载javaee.jar。
7、 利用TortoiesSVN检出Tomcat的源码或者到官网去下载。
二、编译Tomcat6源码
从Tomcat的源代码文件找到build.properties.default文件,打开这个文件找到下面这行:
base.path=/usr/share/java
这个路径是用来存放即将下载的文件的目录,由于我用的是Windows,所以改为适合我的目录:
base.path=/Tomcat-DownLoad //最后生成的目录在源文件所在盘符的根目录下,本例为F:/Tomcat-DownLoad
/**
base.path=D:/Workspace/JEE/workspace/TOMCAT_6_0_26/share
最初用的是这种形式,确在目录中创建了一个特别的名字,不知什么原因,所以用上面的形式
**/
这个路径是用来存放编译Tomcat时实时下载jar的文件夹,修改后另存为build.properties。
接着在D:\Workspace\JEE\workspace\TOMCAT_6_0_26\src 目录下打开命令行窗口,执行下面命令(这里的src目录就是Tomcat源码的目录,下面是图)
ant download
TOMCAT_6_0_26这个版本目前下载正常,较老版本一些下载链接可能会失效,需要在 build.properties文件中改链接。
下载了如下文件:
下载时,有可能nsis-2.46这个包没下载成功,需要再执行一遍ant download命令。
下载完后直接执行 ant 命令就开始编译了
编译过程中可能会提示:“没有提示符JDT”类似的错误信息,原因是下载的ecj-3.7.jar文件不能正常使用造成的!
解决办法:
到下面的地址下载相关的ecj-3.7.2.jar
下载后改名为ecj-3.7.jar替换下载的文件即可!
如果编译成功会提示下面信息:
编译完成后会产生一个output目录,到这个目录(F:\source\javaEE\Web\Tomcat\output\build)下看看,怎么样?我们见到了熟悉的Tomcat目录结构,如下图:
三、将Tomcat源码导入MyEclipse
打开MyEclipse,新建一个Java项目,然后点击“Next”按钮,在“Use default location”中填入D:\Workspace\JEE\workspace\TOMCAT_6_0_26\src
Project name: TOMCAT_6_0_26
然后一路next
接着我们会看到MyEclipse拒绝编译该项目,不要着急,这是由于Eclipse找不到该项目指定的库文件。右击该项目弹出菜单选择 "Build Path" -> "Configure Build Path..." -> "Libraries"
Remove下面两项:
ANT_HOME/lib/ant.jar
TOMCAT_LIBS_BASE/...
如果这两项没有则忽略删除。
接着添加如下依赖(Add External JARs...):
(也可以参考:http://tomcat.apache.org/tomcat-6.0-doc/building.html#Building_with_Eclipse)
(1) ant.jar (在你电脑ant安装目录下lib目录下可以找到)
(2)wsdl4j.jar
(2) junit4.7 (这两个在网上很容易找到)
5.在MyEclipse中运行Tomcat
找到org.apache.catalina.startup.Bootstrap
右键 Run as -> Run Configurations...
在Program参数窗口和VM参数窗口分别填入
start
和
-Dcatalina.home="D:\Workspace\JEE\workspace\TOMCAT_6_0_26\src\output\build"
Debug同理,不解释,看图:
从org.apache.jasper.compiler.Compiler类的generateJava()方法开始Debug更好,debug启动Tomcat,然后浏览器输入地址并回车,就会看到如下Debug视图:
注意:generateJava方法是将jsp编译成java class,这个行为只有第一次请求时才会调用,将你再次发送请求时你将看不到这个Debug视图了,解决办法是到Tomcat的 build\work\Catalina\目录删除对应jsp的类文件
当启动程序是,可能会出现错误提示:
直接单击“Proceed”按钮。
在浏览器中输入http://localhost:8080/examples
单击Servlets examples后出现:
接下来,带个好心情,读源码吧,祝快乐