【tomcat】2、源码环境搭建

  • 在https://blog.csdn.net/hancoder/article/details/106765035中我们已经讲解了tomcat的安装与目录结构
  • 系列文章目录:https://blog.csdn.net/hancoder/category_10106944.html中我们说了一些sevlet的知识
  • https://blog.csdn.net/hancoder/article/details/113064325 说了tomcat源码环境搭建

一、编译源码

去官网下载src源码包source code distributions

解压zip压缩包

修改home

进入解压目录,并创建一个目录,命名为home , 并将conf、webapps目录移入home 目录中

pom

在当前目录下创建一个 pom.xml 文件,引入tomcat的依赖包

<?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.42‐src</artifactId>
    <name>Tomcat8.5</name>
    <version>8.5</version>
    <build>
        <finalName>Tomcat8.5</finalName>
        
        <!-- 都去掉,用maven正常的规则,然后把源码中的java目录和res路径放到对应的maven目录中

<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>2.3</version>
                <configuration>
                    <encoding>UTF‐8</encoding>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <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>

把pom里的乱七八糟的,采用maven的正常方式即可

VM参数

-Dcatalina.home=F:/tomcat-src/home
-Dcatalina.base=F:/tomcat-src/home
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=F:/tomcat-src/home/conf/logging.properties
-Duser.language=en
-Duser.region=US
-Dfile.encoding=UTF-8

500异常

出现一个jsp500的异常,出现上述异常的原因,是我们直接启动org.apache.catalina.startup.Bootstrap的时候没有加载JasperInitializer,从而无法编译JSP。解决办法是在tomcat的源码ContextConfig中的configureStart函数中手动将JSP解析器初始化:

package org.apache.catalina.startup;
ContextConfig类;
添加如下内容
webConfig();
context.addServletContainerInitializer(new JasperInitializer(), null);
// 700+多行

启动类

在IDEA中配置主类,选择new application

生成web项目后放到webapps项目里即可启动访问到

本文的价值在于说了下源码目录的规则,如果有不懂的地方再baidu其他博客吧,搭建源码比较简单

猜你喜欢

转载自blog.csdn.net/hancoder/article/details/113064325