IDEA下Tomcat源码启动运行

本文介绍如何从官网下载Tomcat源码,并使用IDEA导入。详细步骤包括配置Maven依赖、添加缺失的jar包、调整项目设置等。同时解决了一些常见问题,如模块循环依赖、MANIFEST.MF配置错误等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.     Tomcat源码下载

      http://tomcat.apache.org/download-90.cgi

2.     IDEA导入源码

     导入后入下图:

2.1     导入架包

        Tomcat源码下下来后会少了几个架包,代码是会报错的:ant-1.6.5.jar、easymock-3.4.jar、jaxrpc-api-1.1.jar、ecj-4.6.1.jar、wsdl4j-1.6.2.jar、objenesis-2.2.jar、hamcrest-core-1.3.jar,可以手动下载这些架包,也可以通过maven的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>tomcat9</artifactId>

    <name>tomcat9</name>

    <version>9.0</version>

    <build>

        <finalName>apache-tomcat-9.0.0.M26-src</finalName>

        <sourceDirectory>java</sourceDirectory>

        <!--<testSourceDirectory>test</testSourceDirectory>  test 下的有些文件报错,因此将test文件夹去掉了-->

        <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.5.1</version>

                <configuration>

                    <encoding>UTF-8</encoding>

                    <source>1.8</source>

                    <target>1.8</target>

                </configuration>

            </plugin>

            <plugin>

                <groupId>org.apache.maven.plugins</groupId>

                <artifactId>maven-jar-plugin</artifactId>

                <version>2.6</version>

            </plugin>

        </plugins>

    </build>

    <dependencies>

        <dependency>

            <groupId>junit</groupId>

            <artifactId>junit</artifactId>

            <version>4.11</version>

            <scope>test</scope>

        </dependency>

        <dependency>

            <groupId>ant</groupId>

            <artifactId>ant</artifactId>

            <version>1.6.5</version>

        </dependency>

        <dependency>

            <groupId>org.easymock</groupId>

            <artifactId>easymock</artifactId>

            <version>3.4</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.6.1</version>

        </dependency>

    </dependencies>

</project>

2.2        引入tomcat其他模块的架包:

从其他安装版本的tomcat里拷贝lib文件夹放到tomcat的根目录。

 

2.3        删除webapps里没有用的应用

2.4        删除其他module

3.       运行启动

源码启动Tomcat,是启动Bootstrap的main方法,其实startup.bat或者startup.sh也是启动Bootstrap的main方法。

3.1        配置Bootstrap

VM options配置如下:

-Dcatalina.home=D:\MyJob\Project\Maven\apache-tomcat-9.0.0.M26-src

-Dcatalina.base=D:\MyJob\Project\Maven\apache-tomcat-9.0.0.M26-src

-Djava.endorsed.dirs=D:\MyJob\Project\Maven\apache-tomcat-9.0.0.M26-src\endorsed

-Djava.io.tmpdir=D:\MyJob\Project\Maven\apache-tomcat-9.0.0.M26-src\temp

-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager

-Djava.util.logging.config.file=D:\MyJob\Project\Maven\apache-tomcat-9.0.0.M26-src\conf\logging.properties

3.2        启动Bootstrap

出现Server startup in 3040 ms,就是启动成功

3.3        浏览器访问tomcat

http://locathost:8080如下图,表示启动成功:

4.       问题和解决方法

可能会碰到一下一些问题,没关系,碰到问题一个个解决。

4.1        问题一:module cycles:

报错如下:

原因:是在引入源码的时候没有去掉一些没有用到的module导致module循环引用了。

解决:Analyze->Analyze module Denpendencies如下图:

可以看到apache-tomcat-9.0.0.M26-src里引用到WEB-INF这个module,WEB-INF里又引用了apache-tomcat-9.0.0.M26-src,只要删除WEB-INF这个module就行了。

打开Project Structure->Modules,删除WEB-INF,我一般是把除了apache-tomcat-9.0.0.M26-src的module都删了以免出现其他问题,暂时其他都用不到,如下图:

4.2        问题二:jdbc-pool模块配置MANIFEST.MF文件报错

报错如下:

解决:不知道为啥下载下来的文件就有问题,这块反正也没用到,就直接删了。

4.3        问题三:lib文件夹缺失

解决:增加lib目录,从安装版的tomcat文件夹里考一份lib过来(里边的架包要一起考来)。

4.4        问题四:Tomcat启动失败

问题:examples应用下找不到监听的类

原因:看了下目录,classes里居然都是java类,没有编译

解决:这个应用没啥用,直接删了只留下ROOT文件夹就好。

转载于:https://my.oschina.net/u/1018146/blog/1524309

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值