Tomcat源码篇-构建源码编译环境

Posted 波波烤鸭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat源码篇-构建源码编译环境相关的知识,希望对你有一定的参考价值。

Tomcat源码环境构建

  工欲善其事必先利其器,为了学好Tomcat源码,我们需要先在本地构建一个Tomcat的运行环境。

1.源码环境下载

源码有两种下载方式:

1.1 官网下载

https://tomcat.apache.org/

1.2 GitHub下载

当然你也可以通过GitHub来拉取源代码

https://github.com/apache/tomcat

2.Maven环境搭建

2.1 环境准备

打开IEDA导入项目,然后在项目中创建一个新的pom.xml文件,里面的内容为:

<?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>apache-tomcat</artifactId>
  <version>8.5</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>

然后设置项目为Maven项目,选中pom.xml文件,鼠标右点。选择 Add as Maven Project .

在右侧出现的Maven菜单中选择编译项目(compile)

2.2 项目启动

编译成功后进入 Bootstrap中,启动main方法

出现如下提示,说明启动成功,只是中文乱码了

2.3 解决中文乱码问题

中文乱码问题的解决方案,修改两处地方即可

1.修改org.apache.jasper.compiler.Localizer#getMessage(java.lang.String)方法

    public static String getMessage(String errCode) 
        String errMsg = errCode;
        try 
            if (bundle != null) 
                errMsg = bundle.getString(errCode);
            
         catch (MissingResourceException e) 
        
        try
            errMsg = new String(errMsg.getBytes("ISO-8859-1"),"UTF-8");
        catch (UnsupportedEncodingException e)
            e.printStackTrace();
        
        return errMsg;
    

2.修改org.apache.tomcat.util.res.StringManager#getString(java.lang.String)

重启服务

启动正常,但是访问的时候出现了问题

2.4 解决不支持JSP的问题

启动成功后,在访问首页的时候,出现了500错误,而且提示无法为JSP编译类

原因是无法编译jsp。解决也很简单,按照下面步骤操作即可

上面的报错解决方式,可以在org.apache.catalina.startup.ContextConfig类中的configureStart方法中,添加一下JSP解析器初始化即可

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

重启服务:访问搞定

到此Tomcat的源码环境我们就已经准备好了,接下来就可以开始我们的Tomcat源码之旅了!!!

以上是关于Tomcat源码篇-构建源码编译环境的主要内容,如果未能解决你的问题,请参考以下文章

Linux精华篇—CentOS 7.4下源码编译构建LAMP架构

Linux精华篇—CentOS 7.4下源码编译构建LNMP架构

鸿蒙内核源码分析(GN应用篇) | GN语法及在鸿蒙的使用 | 百篇博客分析HarmonyOS源码 | v60.01

鸿蒙内核源码分析(编译脚本篇) | 如何防编译环境中的牛皮癣 | 百篇博客分析HarmonyOS源码 | v58.01

Tomcat8-源码编译及开发

[Tomcat源码分析] Eclipse中搭建Apache Tomcat源码调试环境