• Tomcat源码部署


    1、下载源码

    https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.54/src/apache-tomcat-9.0.54-src.zip

    2、解压

    3、在解压后的根目录创建目录:catalina-home

    4、复制目录到catalina-home中

    5、在根目录中创建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>com.github.sources</groupId>
      <artifactId>source-tomcat9</artifactId>
      <version>9.0.37</version>
      <name>source-tomcat-9.0.37</name>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.13</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.easymock</groupId>
          <artifactId>easymock</artifactId>
          <version>4.2</version>
        </dependency>
        <dependency>
          <groupId>org.apache.ant</groupId>
          <artifactId>ant</artifactId>
          <version>1.10.7</version>
        </dependency>
        <dependency>
          <groupId>wsdl4j</groupId>
          <artifactId>wsdl4j</artifactId>
          <version>1.6.3</version>
        </dependency>
        <dependency>
          <groupId>javax.xml</groupId>
          <artifactId>jaxrpc</artifactId>
          <version>1.1</version>
        </dependency>
        <dependency>
          <groupId>org.eclipse.jdt</groupId>
          <artifactId>org.eclipse.jdt.core</artifactId>
          <version>3.13.0</version>
        </dependency>
        <dependency>
          <groupId>org.eclipse.jdt.core.compiler</groupId>
          <artifactId>ecj</artifactId>
          <version>4.5.1</version>
        </dependency>
        <dependency>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>biz.aQute.bnd.ant</artifactId>
          <version>5.2.0</version>
        </dependency>
      </dependencies>
      <build>
        <finalName>Tomcat9.0.37</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>3.6.1</version>
            <configuration>
              <encoding>UTF-8</encoding>
              <source>1.8</source>
              <target>1.8</target>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </project>
    

    注意,tomcat本身编译为二进制需要很多包,而我们源码调试不需要那么多的包,所以我们只将一些必要的拿出来了,这些在根目录中build.xml中可以看到,注意这个build.xml是ant编译使用的,我们使用maven,所以需要创建一个pom.xml文件。

    6、用IDEA打开目录

    打开后使其加载maven工程,如果未加载,那么则右击pom.xml然后选择add as mavem。

    7、配置启动类

    注意jdk版本为8。

    注意还需要给启动类增加vm参数:

    -Dcatalina.base=E:/MyeclispeWordsapce/apache-tomcat-9.0.54-src/catalina-home
    -Dcatalina.home=E:/MyeclispeWordsapce/apache-tomcat-9.0.54-src/catalina-home
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
    -Djava.util.logging.config.file=E:/MyeclispeWordsapce/apache-tomcat-9.0.54-src/catalina-home/conf/logging.properties
    -Dfile.encoding=UTF-8
    -Dsun.jnu.encoding=UTF-8
    

    注意更换为你自己的路径。

    8、运行

    然后运行BootStrap启动。

    中途如果报错xxx类找不到,或者不存在,直接打开坐标搜索框:

    然后找到你需要的包,对应的添加进pom.xml就行。

    注意任何报错不存在等都可以用这个解决,不用一直百度搜。

    注意如果JDTComplier这个类报错的话,那么则需要修改代码

    像这种CompilerOptions.VERSION_X这种就会报错不存在,那么你可以把多余的if删掉,强迫症也可以手动的给值,例如jdk1.9=1.9,jdk11=11这种。

    9、运行后改错

    注意运行成功后控制台是乱码,且访问8080会报错。

    控制台的乱码先别慌,先看浏览器的报错,这个报错是因为tomcat启动时没有加载jsp初始化类JasperInitializer ,然后编译不了jsp,所以报错,解决方法是:

    解决浏览器报错

    1、定位到此方法:org.apache.catalina.startup.ContextConfig#configureStart

    2、在此处加上监听器:

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

    然后浏览器能正常访问:

    解决而控制台乱码

    1、定位位置:org.apache.tomcat.util.res.StringManager#getString(java.lang.String)

    加入这些代码,把字符转个义。

    /** 解决乱码 */
    try {
        str = new String(str.getBytes(StandardCharsets.ISO_8859_1),"UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    

    2、定位位置:org.apache.jasper.compiler.Localizer#getMessage(java.lang.String)

    加入这些代码,把字符转个义

    /** 解决乱码 */
    try {
        errMsg = new String(errMsg.getBytes(StandardCharsets.ISO_8859_1),"UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    

    然后控制台就没有乱码了,总体来说就是哪里乱码了就去改哪里的编码,查找位置的话直接在控制台上去看具体的包和类。

    然后就部署完成,没有其他问题,可以开始debug了。

  • 相关阅读:
    mysql
    makefile
    KNN算法(k-nearest neighbor)
    时间序列
    python易错题之lambda 以及 for循环中内嵌函数
    python易错题之作用域
    html----不常见标签
    js----DOM对象(3
    js----DOM对象(事件)
    js----对象
  • 原文地址:https://www.cnblogs.com/daihang2366/p/15451841.html
Copyright © 2020-2023  润新知