Tomcat源码编译、调试

一、下载Tomcat源码
① 打开Apache-Tomcat官网(http://tomcat.apache.org/
② 在左侧“Download”中选择要下载的版本(本次8.5.24)
至于为什么要选8.5?因为研究了JDK8的部分源码后,想再深入学习下web容器的知识;9.0版本还在研发,而在8.0.x版本中,并没有完全用到JDK8的特性。详见(http://tomcat.apache.org/whichversion.html
③ 选择“Source Code Distributions”版本下载

二、编译
其实这部分是傻瓜式操作,参照文档即可(http://tomcat.apache.org/tomcat-8.5-doc/building.html
① 将 $(tomcat.source)/build.properties.default文件的“.default”后缀去掉,然后用文本编辑器打开,修改“base.path”路径(这个是tomcat依赖的各种jar包,默认是linux格式,windows平台一定要修改)
② 安装ant(version >= 1.95)
在官网下载ant(http://ant.apache.org/) ,然后打开ant手册目录:$(ant)/manual/index.html,按照左侧“Installing Apache Ant”配置即可
③ 编译;1.使用ant编译,通过命令号进入tomcat目录后,输入ant命令即可;

注:编译成功后,在tomcat目录下会生成output目录,此时output/bin下已经生成了各种命令,可以通过命令运行tomcat了(注意:命令在$(tomcat)/output/build/bin);

三、源码调试
当然了,既然我们选择的是 tomcat-src工程,如果只是直接通过命令行运行,那又有什么意义呢?当然是要在ide中源码调试啦。
① 在$(tomcat)下,运行 ant ide-eclipse(运行了此行命令后,才会在$(tomcat)生成对应ide的工程文件【eclipse 的 .project 和 .classpath】)
如果出现一下问题,不要急:
/Users/kevin/Documents/Development/apache-tomcat-8.5.16/build.xml:2791: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
看到ssl,就知道这个事https找不到证书出错,简单处理方式:手动下载文件到前文配置的 "base.path" 目录下即可,目录截图如下:


15.png

② 再次进行编译,完成
③ 在Eclipse中导入tomcat-src(其他IDE类似)
还有错误?


QQ20170725-184301@2x.png

在以 ide-support 的方式运行tomcat,需要依赖 ant 和 之前配置 base.path 下的jar包
④ 配置环境变量 ANT_HOME,TOMCAT_LIBS_BASE


11.png

12.png

⑤ 启动Tomcat
res/ide-support/eclipse/start-tomcat.launch,启动成功,访问http://localhost:8080,即可看到熟悉的画面

QQ20170725-184648@2x.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,837评论 18 139
  • 参考:http://tomcat.apache.org/tomcat-9.0-doc/building.html ...
    qiongleee阅读 2,595评论 4 3
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,925评论 6 342
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,841评论 25 708
  • 今年是当程序员的第五个年头了,很快就要结束。很多干了几年的程序员都会考虑是否应该转行做管理了,30岁以后还能干几年...
    Black先森阅读 136评论 0 1