将tomcat源码导入eclipse
前言:
写完了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_LIBS_BASE,步骤同上,最后选择的路径就是base.path配置的路径。
6.在eclipse中clean整个工程,这时候应该可以编译成功。然后找到BootStrap.java类,作为java程序运行。运行成功之后就可以通过: http://localhost:8080/ 访问了。

至此,可以通过debug逐步分析tomcat运行过程了。
将tomcat源码导入eclipse的更多相关文章
- Tomcat源码导入eclipse的步骤
Tomcat源码导入eclipse 一.下载源码 1. 进入Apache 官网:http://tomcat.apache.org/ 2. 在左边侧选择要下载的源码的版本. 3. 或者直接通过Ar ...
- tomcat源码导入eclipse步骤
1. 获取源代码 方式一:从官网http://tomcat.apache.org/download-70.cgi 直接下载,官网提供了Binary 和 Source Code两种下载方式,要研究tom ...
- Tomcat源码导入Eclipse测试
想要研究下Tomcat的体系结构或者源码,最好将Tomcat的源码导入到ide中,编写实例进行代码跟踪(debug). 这里参考了网上一些资料,将自己操作过程记个流水账. 准备: 1.Tomcat源码 ...
- tomcat源码导入eclipse
1. 获取源代码 方式一:从官网http://tomcat.apache.org/download-70.cgi 直接下载,官网提供了Binary 和 Source Code两种下载方式,要研究tom ...
- spring源码解析——spring源码导入eclipse
一.前言 众所周知,spring的强大之处.几乎所有的企业级开发中,都使用了spring了.在日常的开发中,我们是否只知道spring的配置,以及简单的使用场景.对其实现的代码没有进行深入的了 ...
- 将struts源码导入eclipse
预制条件和spring源码导入eclipse中一样,下面直接给出导入eclipse的步骤. 步骤: 1. 下载struts相应版本的源码 http://struts.apache.org/downlo ...
- 如何将OpenTSDB源码导入eclipse
OpenTSDB的官网上介绍了如何将OpenTSDB源码导入eclipse,官方链接,但步骤超级繁琐,还有一个简便方法,下面以导入OpenTSDB2.0.0为例. 1. 下载OpenTSDB2.0.0 ...
- 将github上的项目源码导入eclipse详细教程
将github上的项目源码导入eclipse详细教程 学习了: http://blog.csdn.net/itbiggod/article/details/78462720
- 将Android源码导入eclipse中的方法以及编译Android源码指定模块
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/53365659 将android源码导入eclipse.androidstudio. ...
随机推荐
- Android 学习笔记之ContentProvider实现数据共享....
PS:最近听老师说打算让我参与企业的app制作,让我加快学习的进度...好吧,貌似下周还有考试...貌似实验室这个app也要做...暂时不管了...那就只能加快进度了,感觉略微的有点激动和紧张,总算是 ...
- Mysql学习笔记(四)字符串函数
PS:终于看完了字符串函数,心都快碎了...涉及的函数真是太多了...感觉这里的字符串函数和JAVA里的基本都差不多了...基本上算是掌握了,但是想全记住那是不太可能的... 学习内容: 字符串函数的 ...
- SpringMVC——类型转换和格式化、数据校验、客户端显示错误消息
在介绍类型转换和格式化之前,我首先来介绍 <mvc:annotation-driven />. 需要导入的 schema: xmlns:mvc="http://www.sprin ...
- SpringMVC核心——映射问题
一.SpringMVC 使用 RequestMapping 来解决映射问题. 二.在学习 RequestMapping 之前,首先来看一张图. 这张图表示的是发送一次 http 请求时,所包含的请求 ...
- ADO.NET ExcuteReader复习
private void Button_Click(object sender, RoutedEventArgs e) { //ADO.NET 连接方式查询数据库 ExcuteReader执行查询 / ...
- 网狐6603棋牌游戏源码.rar
网狐6603棋牌游戏源码.rar http://pan.baidu.com/s/1dFgGNq5 网络收集仅供学习,下载后请务必在24小时内删除! 以上是原vc6.0源码,下载后使用vs2015编译, ...
- 重构第8天:使用委托代替继承(Replace Inheritance with Delegation)
理解:根本没有父子关系的类中使用继承是不合理的,可以用委派的方式来代替. 详解:我们经常在错误的场景使用继承.继承应该在仅仅有逻辑关系的环境中使用,而很多情况下却被使用在达到方便为目的的环境中. 看下 ...
- Winform开发框架之客户关系管理系统(CRM)的开发总结系列1-界面功能展示
一直以来,都希望整合一个以客户为中心的平台,有两个方面的考虑:一是实现客户数据.客户关系.客户管理等方面的整合,以便更好利用好客户的相关资源,发挥最大的营销效益:二是整合目前我的开发框架的所有模块和技 ...
- Dev 饼图
// 添加引用命名空间 using DevExpress.XtraCharts; /* *具体步骤:(1)先构建饼图对象的数据源DataTable * (2)再设置饼图对象的相关参数 * (3)饼图空 ...
- Try out the latest C++ compiler toolset without waiting for the next update of Visual Studio
Updated 22/Apr/2016: The NuGet package is now being uploaded daily. The payload doesn’t change every ...