Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Tomcat10】:掌握编译、调试 Tomcat 的技能嘛?

【Tomcat10】:掌握编译、调试 Tomcat 的技能嘛?

作者头像
WEBJ2EE
发布于 2021-09-24 06:53:59
发布于 2021-09-24 06:53:59
1K00
代码可运行
举报
文章被收录于专栏:WebJ2EEWebJ2EE
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
目录
1. 一点点说明 
2. 编译 Tomcat 
  2.1. 第一步:配置 JDK
  2.2. 第二步:安装 Ant
  2.3. 第三步:下载 Tomcat 源码
  2.4. 第四步:配置编译参数
  2.5. 第五步:编译 Tomcat
3.IDE 调试 Tomcat 
  3.1. 介绍
  3.2. 用 Eclipse 调试 Tomcat
    3.2.1. 生成 Eclipse 工程配置文件
    3.2.2. 在 Eclipse 中导入项目
    3.2.3. 配置 Eclipse 编译环境变量
    3.2.4. 运行、调试 Tomcat
  3.3.IDEA 调试 Tomcat

如果你想深挖 Tomcat 底层原理

编译、调试只是个开始

....

1. 一点点说明

  • 编译对象:Tomcat 10.0.10
  • 编译平台:Win10 专业版
  • IDE 工具:Eclipse 2021-06 (4.20.0)
  • JDK 版本:11.0.12 2021-07-20 LTS
  • 源码包路径:D:\apache-tomcat-10.0.10-src

2. 编译 Tomcat

2.1. 第一步:安装 JDK

  • 编译 Tomcat10,JDK 必须 >= 8;
  • 配置环境变量 JAVA_HOME、PATH

2.2. 第二步:安装 Ant

  • 编译 Tomcat 10.0.10,Apache Ant 版本必须 >= 1.9.10
  • 配置环境变量 ANT_HOME、PATH

2.3. 第三步:下载 Tomcat 源码

  • 下载 Tomcat 10.0.10 源码包,并解压到 D:\apache-tomcat-10.0.10-src 目录

2.4. 第四步:配置编译参数

Tomcat 编译过程中,会从网络上拉取一些依赖包,所以有两件事需要注意:

  • 良好的网络环境,最好能挂个VPN,加速依赖包的下载;
  • 配置 Tomcat 依赖包的下载路径
    • 在 Tomcat 源码目录下,新建文件 build.properties(源码包中默认不存在此文件),配置依赖包下载路径(必须是绝对路径)。

2.5. 第五步:编译 Tomcat

  • 只需要执行 ant 命令,脚本就会自动下载依赖执行编译过程
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd D:\apache-tomcat-10.0.10-src
ant

注意1:如果你遇到报错“ Failed to parse date string ...”

  • 原因:编译过程中需要解析当前日期,编译脚本无法处理中文区域的时间格式;
  • 解决:把系统时间的区域临时修改为“英语(美国)

3. 用 IDE 调试 Tomcat

3.1. 介绍

  • Tomcat 编译脚本中提供对主流 IDE 环境的支持
    • Eclipse
    • Intellij IDEA

3.2. 用 Eclipse 调试 Tomcat

3.2.1. 生成 Eclipse 工程配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd D:\apache-tomcat-10.0.10-src
ant ide-eclipse

3.2.2. 在 Eclipse 中导入项目

3.2.3. 配置 Eclipse 编译环境变量

初始导入后,你会发现编译失败,报错如下:

报错原因是找不到依赖包。我们需要在 Eclipse 中配置两个环境变量

  • ANT_HOME,指向我们本机安装的 Apache Ant
  • TOMCAT_LIBS_BASE,指向 Tomcat 编译过程中下载的依赖

重新编译后,错误消失。

3.2.4. 运行、调试 Tomcat

  • 使用 res/ide-support/eclipse/start-tomcat.launch 启动 Tomcat
  • 使用 res/ide-support/eclipse/stop-tomcat.launch 停止 Tomcat

调试、运行:

启动成功:

访问测试:

3.3. 用 IDEA 调试 Tomcat

总体路线跟用 Eclipse 调试 Tomcat 差不多

  • 生成 IDEA Intellij 项目配置文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd D:\apache-tomcat-10.0.10-src
ant ide-intellij
  • 配置路径环境变量
    • ANT_HOME
    • TOMCAT_LIBS_BASE
  • 增加测试相关的依赖
    • junit
    • org.easymock
  • 启动Tomcat
    • 入口类:org.apache.catalina.startup.Bootstrap
    • 入口函数:main

参考:

Apache Tomcat: https://tomcat.apache.org/ Apache Ant: https://ant.apache.org/bindownload.cgi Apache Tomcat 10——Building Tomcat: https://tomcat.apache.org/tomcat-10.0-doc/building.html


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WebJ2EE 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
探秘Tomcat(一)——Myeclipse中导入Tomcat源码
前言:有的时候自己不知道自己是井底之蛙,这并没有什么可怕的,因为你只要蜷缩在方寸之间的井里,无数次的生活轨迹无非最终归结还是一个圆形;但是可怕的是有一天你不得不从井里跳出来生活,需要重新审视井以外的生活,你就会发现世界如此美好,我知道的如此的少!   好比,但你看到如下代码 namespace Singleton { public class Singleton { private static Singleton singleton; priva
JackieZheng
2018/01/15
9040
探秘Tomcat(一)——Myeclipse中导入Tomcat源码
【ZooKeeper系列】3.ZooKeeper源码环境搭建
前文阅读: 【ZooKeeper系列】1.ZooKeeper单机版、伪集群和集群环境搭建 【ZooKeeper系列】2.用Java实现ZooKeeper API的调用
猿人谷
2020/06/19
1.2K0
什么?编译了三个版本Tomcat源码后,我才发现这个bug
一产品是基于多模块开发的 SpringBoot 项目,发布时导出多个 war 包部署在同一个 Tomcat 。模块有五六个,发布时最大的问题就是每个包都很大,主要是各个模块的 WEB-INF/lib 下包含大量相同 jar ,因此有必要将公共包摘出来放到 Tomcat 的共享目录下。
烂猪皮
2021/04/02
5670
震惊!我三步就搞定了 Tomcat 源码环境搭建!
随着微服务的流行,轻量级的服务应用器也是跟着大火了。毕竟那些企业级的服务应用器部署搭建成本太高。并且springboot 自带的就是 tomcat 服务。
程序员爱酸奶
2020/07/23
1.5K0
震惊!我三步就搞定了 Tomcat 源码环境搭建!
什么?编译了三个版本Tomcat源码后,我才发现这个bug
一产品是基于多模块开发的 SpringBoot 项目,发布时导出多个 war 包部署在同一个 Tomcat 。模块有五六个,发布时最大的问题就是每个包都很大,主要是各个模块的 WEB-INF/lib 下包含大量相同 jar ,因此有必要将公共包摘出来放到 Tomcat 的共享目录下。
Java程序猿阿谷
2021/03/02
8040
什么?编译了三个版本Tomcat源码后,我才发现这个bug
Tomcat源码分析一:源码导入
下载tomcat源码包 从tomcat官网tomcat.apache.org上下载tomcat8.x的源码包apache-tomcat-8.0.32-src.zip http://tomcat.apache.org/download-80.cgi 生成IDE项目 源码包下的ant build.xml中已经包含了生成eclipse项目的target: <target name="ide-eclipse" depends="download-compile, extras-webservices-prepar
囚兔
2018/02/08
1.1K0
Tomcat源码分析一:源码导入
tomcat7编译
本文是Tomcat源代码阅读系列的第一篇文章,在阅读Tomcat源代码之前,我们首先需要将Tomcat的源代码在IDE里面运行起来,这样方便我们阅读的过程中调试。本文总结一下在IDEA 或者 Eclipse中运行Tomcat源代码环境的搭建过程,同时我们通过Maven来负责项目的构建。
全栈程序员站长
2022/09/09
7920
tomcat7编译
将tomcat源码导入eclipse
前言: 写完了socket小应用的原始版本,中间还有好多预想的功能没有实现,在写的过程中也发现了很多问题。因为前面有粗略的看过tomcat实现原理解析,知道tomcat其实也是纯java写的web服务器,而且用的也是socket通信。所以特别想看下tomcat是如何处理这些问题的。 主要步骤: 1. 去apache官网下载对应的tomcat版本源码(我这里下载的是9.0.0.M9)  http://tomcat.apache.org/download-90.cgi 2. 解压后的源码是没法作为工程直接导入e
SecondWorld
2018/03/14
1.6K0
将tomcat源码导入eclipse
Tomcat原理剖析-tomcat介绍和源码idea构建
Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。
程序猿川子
2022/08/10
8030
【Kafka】编译 Kafka2.7 源码并搭建源码环境(Ver 2.7.2)
Kafka 是通过 Scala 和 Java共同编写的语言,之所以选择2.7.2的版本是因为这个版本的Kafka是最后一版本保留ZK的版本。
阿东
2023/03/16
3610
【Kafka】编译 Kafka2.7 源码并搭建源码环境(Ver 2.7.2)
tomcat学习|tomcat源码结构
小刀博客: https://www.lixiang.red 学习背景 提到tomcat,相信大家都不陌生,只要是搞web开发的,老师总会让我们把应用打成war包,然后再丢到tomcat的webapp里
微笑的小小刀
2019/08/13
9970
tomcat学习|tomcat源码结构
Hadoop源码编译全流程分享
首先准备一个hadoop源码包,我选择的hadoop版本是:hadoop-2.7.7-src.tar.gz,在hadoop-2.7.7的源码包的根目录下有一个文档叫做BUILDING.txt,这其中说明了编译hadoop所需要的一些编译环境相关的东西。不同的hadoop版本的要求都不一样,对应的版本参照BUILDING.txt
江帅帅
2020/06/03
2.3K0
Hadoop源码编译全流程分享
Tomcat 安全配置与性能优化
Tomcat 安全配置与性能优化 目录 1. JVM 1.1. 使用 Server JRE 替代JDK。 1.2. JAVA_OPTS 2. Tomcat 优化 2.1. maxThreads 连接数限制 2.2. 虚拟主机 2.3. 压错传输 3. Tomcat 安全配置 3.2.1. 隐藏版本信息 3.2.2. 应用程序安全 3.2.3. JSESSIONID 3.1. 禁用8005端口 3.2. 安装后初始化配置 3.3. 启动用户与端口 4. 如何部署应用程序 1. JVM 1.1. 使用 Serv
netkiller old
2018/03/05
1.2K0
Tomcat-4.部署
部署(Deployment):将Web应用(第三方的WRA文件,或者自己定制的Web应用)安装到Tomcat服务器上的过程。
悠扬前奏
2019/05/28
6700
64位centos 下编译 hadoop 2.6.0 源码
64位os下为啥要编译hadoop就不解释了,百度一下就能知道原因,下面是步骤: 前提:编译源码所在的机器,必须能上网,否则建议不要尝试了 一. 下载必要的组件 a) 下载hadoop源码 (当前最新的稳定版是2.6.0) 地址  http://mirrors.hust.edu.cn/apache/hadoop/common/stable/hadoop-2.6.0-src.tar.gz b) 下载apache-ant (centos自带的ant版本太低,编译过程中会报错) 地址: http://mirro
菩提树下的杨过
2018/01/19
1K0
64位centos 下编译 hadoop 2.6.0 源码
64位CentOS上编译 Hadoop 2.2.0
下载了Hadoop预编译好的二进制包,hadoop-2.2.0.tar.gz,启动起来后,总是出现这种警告: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
星哥玩云
2022/07/01
4260
Tomcat的原理与用法初步使用
Tomcat 是一个开源的 Java Servlet 容器,由 Apache 软件基金会(ASF)开发并维护。它实现了 Java Servlet、JavaServer Pages (JSP)、Java Expression Language (JSTL) 和 Java WebSocket 技术,广泛用于开发和部署 Java Web 应用程序。
炒香菇的书呆子
2024/09/28
2420
『互联网架构』软件架构-Intellij IDEA技巧篇(七)
PS:工欲善其事,必先利其器。当然,无论如何的夸它,都只是别人的体验,若真想了解它,唯一的就是自己亲自去体验。沒有最流行的框架,只有最流行的helloword。最好的并不是最合适的。最合适的最好。简单得东西对用过的人都会感觉很简单,对没用过的其实感觉好难。在使用idea开发的时候,经常都是写这运行这,小步快走的思路,尽量让代码稳。
IT架构圈
2019/03/06
1.1K0
『互联网架构』软件架构-Intellij IDEA技巧篇(七)
Tomcat9源码——编译环境搭建
Readme Tomcat 9 源码要求: 1.jdk1.8+ 步骤 1.直接下载源码 <div align="center"> </div> 2.解压后打开文件夹,新建pom.xml,输入下面的
Zephery
2018/03/12
2.2K0
Tomcat9源码——编译环境搭建
Java代码审计入门篇
Java这个语言相对于PHP来说还是比较复杂的,所以一开始接触到Java源码审计的时候会遇到一些关于环境和配置上一些困难,本文记录斗哥在开始去审计Java代码的一些准备,希望能够帮助到刚入门的新手朋友们。
漏斗社区
2018/07/26
2K0
Java代码审计入门篇
相关推荐
探秘Tomcat(一)——Myeclipse中导入Tomcat源码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验