Tomcat源码环境搭建

工具版本

JDK:1.8.0.211

Tomcat:8.5.50

IDEA:2019.3.5

1、Tomcat源码下载

1.1、源码压缩包

在tomcat官网 https://tomcat.apache.org

找到如下图位置,下载 zip 包,找地方解压即可,不过这种压缩包的方式并不灵活,我用的是第二种方式。
在这里插入图片描述

1.2、GitHub 源码

如下图,找到 GitHub 仓库,把 tomcat 源码仓库克隆到本地即可,这样如果需要别的版本也可以随时切换分支来实现。也可以直接访问 GitHub 仓库 https://github.com/apache/tomcat
在这里插入图片描述

2、IDEA 与 Maven 环境搭建

2.1 IDEA 打开 tomcat 源码

点击 Open 打开上一步克隆的 tomcat 仓库 或者 源码压缩包的解压目录(两者内容一样),我是用的 GitHub 仓库。
在这里插入图片描述

打开之后是在 main 分支上的,这里切换到 8.5.50 分支,tomcat 8.5.50 版本已经被打成标签了,所以这里先切到标签上,再创建一个新分支
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2、 Maven 构建源码

tomcat 官方是用 ant 构建的源码,这个玩意儿太老了,不会用,所以是用 maven 构建

先创建 maven 的 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>my-tomcat</artifactId>
  <version>8.5.50</version>

  <dependencies>
    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant</artifactId>
      <version>1.10.4</version>
    </dependency>
    <dependency>
      <groupId>wsdl4j</groupId>
      <artifactId>wsdl4j</artifactId>
      <version>1.6.2</version>
    </dependency>
    <dependency>
      <groupId>javax.xml</groupId>
      <artifactId>jaxrpc-api</artifactId>
      <version>1.1</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jdt.core.compiler</groupId>
      <artifactId>ecj</artifactId>
      <version>4.5.1</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>apache-tomcat</finalName>
    <sourceDirectory>java</sourceDirectory>
    <resources>
      <resource>
        <directory>java</directory>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

如下图,右键 pom.xml文件,添加为 maven 项目。
在这里插入图片描述

然后,编译一下
在这里插入图片描述

3、 源码运行

3.1 初始运行

找到 Bootstrap 类,运行 main 方法
在这里插入图片描述

如图所示,启动成功

3.2、解决乱码

上一步启动成功,但是控制台都是乱码,需要处理一下,这里修改两处地方

org.apache.jasper.compiler.Localizer#getMessage(java.lang.String) 这个方法添加下边代码

if (errMsg != null && errMsg.trim().length() > 0){
            try {
                errMsg = new String(errMsg.getBytes("ISO-8859-1"), "UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }

修改如下图
在这里插入图片描述

org.apache.tomcat.util.res.StringManager#getString(java.lang.String) 这个方法添加下边代码

// 解决控制台国际化中文乱码
        // 为什么会出现中文乱码呢?
        // 因为在通过ResourceBundle进行国际化设置时, 资源文件必须是ISO-8859-1,
        // 而Idea设置的编码格式是UTF-8, tomcat默认日志格式(logging.properties)也是UTF-8;
        // ResourceBundle对于所有非西方语系的处理,都必须先将之转换为Java Unicode Escape格式。
        // 转换方法是通过JDK自带的工具native2ascii, 在解析过程中由于格式不匹配导致了乱码
        if (str != null && str.trim().length() > 0){
            try {
                str = new String(str.getBytes("ISO-8859-1"), "UTF-8");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

修改如下图
在这里插入图片描述

此时重新运行 main 方法,启动成功,如下图
在这里插入图片描述

3.3、解决 JSP 问题

上一步启动成功之后,在浏览器访问 http://localhost:8080/

在这里插入图片描述

可以看出是不能把类编译成 JSP,需要初始化一下 JSP 解释器

org.apache.catalina.startup.ContextConfig#configureStart 方法添加一行代码

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

修改如下图
在这里插入图片描述
重启服务,可以正常访问
在这里插入图片描述
好了,源码环境搭建成功,接下来就可以新建一个 web 项目,添加一些测试类,编译打包成 war 包复制到 webapps 目录下,愉快的打断点学习 tomcat 了!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Gradle是一种现代化的构建工具,它可以帮助我们管理Java项目的依赖关系并且灵活地构建项目。要使用Gradle搭建Spring码,我们可以按照以下步骤进行操作: 1. 下载Gradle:首先,我们需要从Gradle官网(https://gradle.org)下载并安装Gradle。根据操作系统的不同,选择合适的版本进行下载。 2. 创建Gradle项目:在电脑上选择一个合适的目录,使用命令行或者IDE工具创建一个新的Gradle项目。可以使用以下命令进行创建: ``` gradle init --type java-application ``` 这将创建一个基本的Java应用程序项目,并生成一个build.gradle文件。 3. 导入Spring码:将Spring码下载到本地,解压并存放在一个合适的目录下。 4. 配置build.gradle文件:打开生成的build.gradle文件,添加Spring码作为项目的依赖项。可以使用以下代码进行配置: ``` dependencies { compile files('path/to/spring/sources') } ``` 将`path/to/spring/sources`替换为Spring码的实际路径。 5. 构建项目:使用以下命令构建项目: ``` gradle build ``` Gradle将自动下载配置的依赖项,并编译打包项目。 6. 运行项目:根据项目的具体情况,使用合适的命令运行Spring码。例如,如果是一个Web应用程序,可以使用以下命令运行: ``` gradle bootRun ``` Gradle将启动嵌入的Tomcat服务器并运行Spring应用程序。 通过以上步骤,我们可以使用Gradle搭建Spring码并运行项目。使用Gradle构建工具能够简化项目的管理和构建过程,并且为我们提供了更灵活和可扩展的选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值