zoukankan      html  css  js  c++  java
  • Tomcat源码环境搭建

    源码构建

    直接下载构建好的源码,还有案例分析
    https://gitee.com/zhong96/tomcat-start

    下载地址:https://tomcat.apache.org/download-80.cgi

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pju8w3le-1594385980336)(images/gqzdev_2020-07-10_20-41-53.png)]

    1.解压源码 apache-tomcat-8.5.57-src

    2.apache-tomcat-8.5.57-src目录下添加pom文件

    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-8.5.57-src</artifactId>
        <name>Tomcat8.5</name>
        <version>8.5</version>
        <build>
            <!--指定源目录-->
            <finalName>Tomcat8.5</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.1</version>
                    <configuration>
                        <encoding>UTF-8</encoding>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
        <!--tomcat 依赖的基础包-->
        <dependencies>
            <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>
    

    3.在apache-tomcat-8.5.57-src 同级目录新建 catalina-home并保证目录下面文件如下

    在这里插入图片描述
    在这里插入图片描述

    注意: 上面文件夹apache-tomcat-8.5.57-src里面有的,就复制过来,

    没有的就新建一个, bin、conf、 webapps 应该是从apache-tomcat-8.5.57-src复制过来的

    4.IDEA引入项目

    File->Open 选择解压的 E:dev_workspace omcat-analysis (注意! 选择你自己的路径)

    配置启动

    1. MainClass:

    org.apache.catalina.startup.Bootstrap

    1. VmOptions: (注意选择自己的目录路径)

    -Dcatalina.home=E:dev_workspace omcat-startcatalina-home
    在这里插入图片描述

    启动报错

    1. 乱码问题

    主要修改两个位置:

    1. org.apache.tomcat.util.res.StringManager[注意不要找错类,注意看包名]

    在这里插入图片描述

    // 处理乱码问题
    try {
         str = new String(str.getBytes("ISO-8859-1"), "UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    
    1. org.apache.jasper.compiler.Localizer

    在这里插入图片描述

    // 处理乱码问题
    try {
        errMsg = new String(errMsg.getBytes("ISO-8859-1"), "UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    

    2. 无法找到JSP编译类

    org.apache.jasper.JasperException: 无法为JSP编译类

    在这里插入图片描述

    org.apache.catalina.startup.ContextConfig类中添加初始化JSP的解析引擎

    // 初始化 jsp 解析引擎
    context.addServletContainerInitializer(new JasperInitializer(),null);
    

    在这里插入图片描述

    启动即可:
    在这里插入图片描述

    3. 其他报错,不影响运行

    严重: 配置应用程序监听器[listeners.ContextListener]错误
    java.lang.ClassNotFoundException: listeners.ContextListener

    ……

    严重: 配置应用程序监听器[listeners.SessionListener]错误
    java.lang.ClassNotFoundException: listeners.SessionListener

    ……

    严重: 配置应用程序监听器[async.AsyncStockContextListener]错误
    java.lang.ClassNotFoundException: async.AsyncStockContextListener

    ……

    严重: 配置应用程序监听器[websocket.drawboard.DrawboardContextListener]错误
    java.lang.ClassNotFoundException: websocket.drawboard.DrawboardContextListener

    ……

    ​ 运行Tomcat源码时,遇到上面的问题:java.lang.ClassNotFoundException: listeners.ContextListener ,删除webapps下的examples即可,可以将webapps中原来的目录都删了,只需要部署自己的应用。

  • 相关阅读:
    Springboot 之 自定义配置文件及读取配置文件
    SQLSERVER系统视图 sql server系统表详细说明
    MySQL Workbench建表时 PK NN UQ BIN UN ZF AI 的含义
    使用Ecplise git commit时出现"There are no stages files"
    maven添加sqlserver的jdbc驱动包
    java将XML文档转换成json格式数据
    java将XML文档转换成json格式数据
    cannot be resolved. It is indirectly referenced from required .class files
    org.codehaus.jackson.map.JsonMappingException: Can not construct instance of java.util.Date from String value '2012-12-12 12:01:01': not a valid representation (error: Can not parse date "2012-12-
    @Autowired注解和静态方法 NoClassDefFoundError could not initialize class 静态类
  • 原文地址:https://www.cnblogs.com/gqzdev/p/13436781.html
Copyright © 2011-2022 走看看