前言

tomcat作为Java项目运行的容器,基本上算是目前使用最多的容器了吧,因此对tomcat的容器的研究很有必要,不仅是学习容器本身的设计思想,更能通过源码的调试和阅读对于其深层的原理进行较好的研究,对再学习其他框架很有帮助,因此构建起tomcat的源码阅读环境很有必要,下面小编就来演示下如何基于tomcat8版本构建源码的阅读环境吧

1、官网下载tomcat的源码包

进入官网:https://tomcat.apache.org/download-80.cgi,点击这里下载到本地

下载之后直接解压就好

2、再在解压后的同级目录创建catalina-home目录

进入解压后的tomcat文件内,将相关的目录,比如,bin,conf,webapps等目录全部拷贝到catalina-home文件夹中,参照tomcat本身的目录结构,如果发现源码包下的文件夹缺失,手动创建一下,catalina-home中完整的目录结构如下图

3、在apache-tomcat-8.5.38-src文件夹创建pom文件

因为下载下来的源码包没有pom文件,为了编译并以maven项目运行,需要手动构建一下pom文件,完整的pom文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.apache.tomcat</groupId><artifactId>Tomcat8.0</artifactId><name>Tomcat8.0</name><version>8.0</version><build><finalName>Tomcat8.0</finalName><sourceDirectory>java</sourceDirectory><testSourceDirectory>test</testSourceDirectory><resources><resource><directory>java</directory></resource></resources><testResources><testResource><directory>test</directory></testResource></testResources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3</version><configuration><encoding>UTF-8</encoding><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.easymock</groupId><artifactId>easymock</artifactId><version>3.4</version></dependency><dependency><groupId>ant</groupId><artifactId>ant</artifactId><version>1.7.0</version></dependency><dependency><groupId>wsdl4j</groupId><artifactId>wsdl4j</artifactId><version>1.6.2</version></dependency><dependency><groupId>javax.xml</groupId><artifactId>jaxrpc</artifactId><version>1.1</version></dependency><dependency><groupId>org.eclipse.jdt.core.compiler</groupId><artifactId>ecj</artifactId><version>4.5.1</version></dependency></dependencies>
</project>

4、idea以maven的形式导入上面的项目

导入成功后,配置一下本地的maven环境

5、配置导入的tomcat项目启动参数

点击edit-configuration,在启动参数里面填写2行主要配置,与图中的对应,最好为自己的启动应用起一个名字,便于标识

org.apache.catalina.startup.Bootstrap
-Dcatalina.home="D:\dev-tools\tomcat\catalina-home"

6、启动项目

启动之后,一般来说会报两个错误,第一个是TestCookieFilter这个类,简单的解决办法就是,注释掉里面的测试方法即可

第二个错误是,启动之后,访问 : localhost:8080时,页面出现下面的错误

这个问题的解决也不难,找到ContextConfig这个类中的configureStart()方法,在方法中添加下面这段代码即可:

context.addServletContainerInitializer(new JasperInitializer(), null);

这样修改了之后,再次启动就可以成功启动应用了,访问:localhost:8080,如下图所示:

到这里,我们就完成了基于idea对tomcat8.X源码环境的构建,然后就可以愉快的阅读源码了,本篇到此结束,最后感谢观看!

tomcat源码环境构建相关推荐

  1. Spring5.3.x源码环境构建

    Spring5.3.x源码环境构建 参考链接:https://blog.csdn.net/smart_an/article/details/107199151 准备工具 git :拉取代码 jdk1. ...

  2. idea启动tomcat没有加载项目_震惊!我三步就搞定了 Tomcat 源码环境搭建!

    喜欢请点关注 引言 随着微服务的流行,轻量级的服务应用器也是跟着大火了.毕竟那些企业级的服务应用器部署搭建成本太高.并且springboot 自带的就是 tomcat 服务. 所以我们也有必要学习 t ...

  3. dockerfile用源码包构建tomcat服务

    一.说明 centos基于docker官方镜像来制作的,用tomcat源码包生成的镜像,本环境中tomcat安装目录位于:/usr/local/,jdk安装目录位于:/usr/,如果你使用docker ...

  4. Tomcat - 源码构建Tomcat 8.5.55 启动

    文章目录 官方地址 源码搭建分析 源码搭建步骤 (Maven管理) Step1. 新增maven管理文件 pom.xml Step2. 处理conf 和 webapps Step3. 导入IEDA 3 ...

  5. idea构建spring源码环境

    前言 最近抽空在摸索spring源码,就想在idea中把spring源码环境给跑起来,以便于自己进行断点调试和学习,但在自己构建的时候才发现使用idea构建spring源码的环境的确不是一件简单简单的 ...

  6. 轻松构建Tomcat源码

    目录 1.源码下载 2.源码构建 2.1配置 2.2源码导入 2.3启动源码 运行 1.源码下载 下载链接:https://tomcat.apache.org/download-80.cgi#8.5. ...

  7. Tomcat源码解析:环境搭建

    下载源码 从github下载tomcat源码 git clone https://github.com/apache/tomcat.git 或者直接fork一份到自己仓库,以便后续添加注释,附上笔者自 ...

  8. Apache ZooKeeper - 构建ZooKeeper源码环境及StandAlone模式下的服务端和客户端启动

    文章目录 源码环境搭建 clone source 源码结构 启动 查找启动类 配置文件 pom文件调整 log4j.properties 以源码的方式启动Server 以源码的方式启动Client 验 ...

  9. Tomcat源码调试环境搭建

    我们一般都是为了解决某个问题,才去看源码的.Java体系就是这点好处,源码唾手可得.遇到问题,最后的解决方法总是可以从源码中找到. 参考了网上的文章,过程整理如下: 1. 下载和导入 官网下载编译好的 ...

最新文章

  1. 独家 | 一文盘点AutoML 库
  2. Linear_algebra_02_行列式
  3. 类Xadmin插件--海豚插件
  4. 信息学奥赛C++语言: 直方图
  5. 一:Java+SpringBoot框架框架的安装和启用
  6. 使用Toolbar + DrawerLayout快速实现高大上菜单侧滑
  7. 树莓派7寸触屏,略贵
  8. 评委输入的密码如果不正确,当错误的次数达到5次时,该评委的账号会被锁定.如何解锁呢?
  9. 【优化算法】爬虫搜索算法(RSA)【含Matlab源码 1838期】
  10. 高通APQ8074(骁龙800)处理器
  11. php rrd 做统计数据,Ganlia采样、统计及RRD记录周期(频次、间隔)的配置和更改...
  12. JavaScript高级程序设计[美]Nicholas C.Zakas著 读书笔记(三)
  13. Deci and Centi Seconds parsing in java
  14. 孩子不上学在家玩游戏打骂父母
  15. 初识软件工程-软件工程的产生与发展
  16. CAD教程:CAD看图软件中怎么设置比例?
  17. SQLserver分离数据库
  18. 如何轻松愉快的搞定产品经理面试
  19. 少年,我看你骨骼惊奇,必是练武奇才,将来维护宇宙正义
  20. 多元线性回归的正规方程解

热门文章

  1. 微信成为开发者C#代码
  2. 最好的计划是略有闲余的计划,用于缓冲必然出现的错误与突发事件(转)
  3. Matlab定义符号函数(ZZ)
  4. netatalk,轻松将linux变成你的Mac File Server!!!
  5. PHP(2):搭建PHP 运行环境中可能出现的问题及处理方法
  6. 记录一下flex布局左边固定,右边100%
  7. cmd完成拷贝文件,并生成两个快捷脚本
  8. php 的定界符 eof
  9. vue1和vue2获取dom元素的方法 及 nextTick() 、$nextTick()
  10. CS224n研究热点5 图像对话