首先从Apache的SVN服务器中获取Tomcat源码
- 安装SVN客户端。当然也可以安装(My)Eclipse的插件。这里采用安装SVN客户端的方式。安装方式参考我的另一篇博文:SVN服务器搭建以及在MyEclipse中的使用方法
- cmd-->svn export http://svn.apache.org/repos/asf/tomcat/tc6.0.x/tags/TOMCAT_6_0_36/ D:/Tomcat_Src ;后面的路径可以自定义。(要求联网)。执行成功后,下面是D:/Tomcat_Src目录的结构:
- 在该目录下新建build.properties文本文件,并复制目录下的build.properties.default文件的内容到build.properties中。
- 修改build.properties文件内容,把
改为:base.path=/usr/share/java
因为原始内容是linux系统的路径表示法。这里得改为Window系统的路径表示法base.path=D:/Tomcat_Src/share
编译Tomcat源码
- 由于Tomcat是用Ant工具进行编译,所以得下载ANT。下载地址:http://ant.apache.org/bindownload.cgi 。得到 apache-ant-1.9.3-bin.zip。也可以使用其他版本。安装方法可以解压后参照里面的manual目录下的install.html文件。
- 执行cmd,切换到D:/Tomcat_Src目录下,执行ant downlaod命令。执行完后,D:/Tomcat_Src目录下会新建有一个share目录,就是上面配置的。其目录结构如下:
- 同时也会新建output目录。
- 执行cmd,切换到D:/Tomcat_Src目录下,执行ant 命令,开始编译。跳过上述步骤不会编译成功。成功后会在D:/Tomcat_Src目录下新建一个output目录。这个目录后面会用到。
导入MyEclipse
直接上图:
点击Finish后,出现工程Tomcat 6.0.36,但又部分代码报错。这是因为缺少部分Jar包。分别是:
- ant.jar 这个可以在刚才那个ant的解压目录中的lib文件下找到。
- wsdl4j-1.6.2.jar 下载地址:http://download.csdn.net/detail/u012358984/6849633
- javaee.jar 下载地址:http://download.csdn.net/detail/u012358984/6849637
加入上面三个Jar包后,就能编译通过。
运行Tomcat
- 找到类:org.apache.catalina.startup.Bootstrap
- 右键run as--> run configurations.如下图设置:
- 点击Run,输出:
Jan 14, 2014 11:50:36 PM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Program Files\Java\jdk1.7.0_45\bin;C:\windows\Sun\Java\bin;C:\windows\system32;C:\windows;E:\Installation Programs\About Java\apache-ant-1.9.3/bin;D:\Program Files\Java\jdk1.7.0_45\bin;D:\Program Files\Java\jdk1.7.0_45\bin\bin;D:\Program Files\Python33\;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;D:\Program Files (x86)\Git\cmd;D:\Program Files\MySQL\MySQL Server 5.5\bin;D:\Program Files\TortoiseSVN\bin;d:\Program Files (x86)\Bazaar;. Jan 14, 2014 11:50:36 PM org.apache.coyote.http11.Http11Protocol init INFO: Initializing Coyote HTTP/1.1 on http-8080 Jan 14, 2014 11:50:36 PM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 890 ms Jan 14, 2014 11:50:36 PM org.apache.catalina.core.StandardService start INFO: Starting service Catalina Jan 14, 2014 11:50:36 PM org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/@VERSION@ Jan 14, 2014 11:50:36 PM org.apache.catalina.startup.HostConfig deployDescriptor INFO: Deploying configuration descriptor docs.xml Jan 14, 2014 11:50:36 PM org.apache.catalina.startup.HostConfig deployDescriptor INFO: Deploying configuration descriptor host-manager.xml Jan 14, 2014 11:50:36 PM org.apache.catalina.startup.HostConfig deployDescriptor INFO: Deploying configuration descriptor manager.xml Jan 14, 2014 11:50:37 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory examples Jan 14, 2014 11:50:37 PM org.apache.catalina.core.ApplicationContext log INFO: ContextListener: contextInitialized() Jan 14, 2014 11:50:37 PM org.apache.catalina.core.ApplicationContext log INFO: SessionListener: contextInitialized() Jan 14, 2014 11:50:37 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory ROOT Jan 14, 2014 11:50:37 PM org.apache.coyote.http11.Http11Protocol start INFO: Starting Coyote HTTP/1.1 on http-8080 Jan 14, 2014 11:50:37 PM org.apache.jk.common.ChannelSocket init INFO: JK: ajp13 listening on /0.0.0.0:8009 Jan 14, 2014 11:50:37 PM org.apache.jk.server.JkMain start INFO: Jk running ID=0 time=12/33 config=null Jan 14, 2014 11:50:37 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 1385 ms
- 启动成功。
- 当然也就能设置断点,和debug as了。
若有不对的地方,欢迎吐槽。技术嘛,就是要讨论才能迅速提高。