将tomcat源码导入eclipse

时间:2023-01-02 05:31:43

前言:

写完了socket小应用的原始版本,中间还有好多预想的功能没有实现,在写的过程中也发现了很多问题。因为前面有粗略的看过tomcat实现原理解析,知道tomcat其实也是纯java写的web服务器,而且用的也是socket通信。所以特别想看下tomcat是如何处理这些问题的。

主要步骤:

1. 去apache官网下载对应的tomcat版本源码(我这里下载的是9.0.0.M9)  http://tomcat.apache.org/download-90.cgi

2. 解压后的源码是没法作为工程直接导入eclipse的。需要使用ant进行编译,所以这里需要去ant官网下载ant对应版本。http://ant.apache.org/bindownload.cgi

然后配置ANT_HOME、path、classpath。

3. 在解压后的tomcat源码的根路径打开控制台,并且输入 ant ide-eclipse进行编译。此时会下一堆依赖的jar包。这些jar包下载到的路径可以通过打开跟路径下build.properties.default文件中的base.path指定,默认的值为${user.home}/tomcat-build-libs。其实在C:\Users\Administrator\tomcat-build-libs路径下。这里为了将下载下来的依赖的jar包放到tomcat源码路径,修改base.path为E:/SourceCode/Code/tomcat/apache-tomcat-9.0.0.M9-src/build-libs。

4. 如果用的是最新版本的tomcat源码,那么在编译的过程中可能会出现:[get] Error getting https://objenesis.googlecode.com/files/objenesis-1.2-bin.zip  的错误。这个很明显是天朝防火墙造成的。我这里将下载到的上传到了下面百度云的地址: http://pan.baidu.com/s/1c2oO0so。下载完成之后,我们可以修改该文件的下载地址为本地,修改后格式如下:

# ----- objenesis, used by EasyMock, version 1.2 or later -----
objenesis.version=1.2
objenesis.home=${base.path}/objenesis-${objenesis.version}
objenesis.loc=http://localhost:8080/objenesis-${objenesis.version}-bin.zip
objenesis.jar=${objenesis.home}/objenesis-${objenesis.version}.jar

这样指定文件的下载地址为本地。我们只需将下载到的jar包放到本地tomcat的 webapps/ROOT目录中,然后启动tomcat服务器即可。当然更简便的方法,我们其实可以直接删掉这一段要执行的过程,然后将下载到的zip包直接解压到前面重新指定的base.path路径下。这样会发现多了一个objenesis-1.2目录,并且目录下有3个jar包。

最后我们只要再重新执行一次 ant ide-eclipse,保证build success即可。

5. 在eclipse中导入对应的项目源码跟路径,可以发现此时eclipse可以将其作为一个工程导入了。导入进去一般还会存在编译错误。这时候需要考虑3个build path的设置:

一是jre的版本以及java compile的版本

二是ANT_HOME的设置:具体步骤如下图

将tomcat源码导入eclipse

三是设置TOMCAT_LIBS_BASE,步骤同上,最后选择的路径就是base.path配置的路径。

6.在eclipse中clean整个工程,这时候应该可以编译成功。然后找到BootStrap.java类,作为java程序运行。运行成功之后就可以通过: http://localhost:8080/ 访问了。

将tomcat源码导入eclipse

至此,可以通过debug逐步分析tomcat运行过程了。