文档章节

IDEA下Tomcat源码启动运行

Fuang
 Fuang
发布于 2017/08/26 16:52
字数 815
阅读 298
收藏 0

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文件夹就好。

© 著作权归作者所有

Fuang
粉丝 0
博文 5
码字总数 2603
作品 0
福州
程序员
私信 提问
IDEA创建Tomcat8源码工程流程

上一篇文章的产出,其实离不开网上各位大神们的辅助,正是通过他们的讲解,我才对Tomcat的结构有了更进一步的认识。 但在描述前后端交互的过程中,还有很多细节并没有描述到位,所以就有了研...

Shawn不要懒
2018/07/28
0
0
Idea 调试Tomcat源码

开篇  不知道从哪个途径被安利买了一本《Tomcat架构解析》的书,突然对Tomcat来了兴趣,准备花一段时间好好研究这个对自己来说是黑盒的容器,所以在未来一段时间里朋友圈应该会有大量这方面...

晴天哥
2018/10/05
0
0
IDEA配置、安装及创建、发布项目

IDEA配置、安装及创建、发布项目 一、下载 进入官网:https://www.jetbrains.com/idea/ 点击右上角download,可以进行版本选择 此处选择使用2015版本,分别有企业版和社区版,企业版收费,社...

JS_HCX
2018/05/26
0
0
使用 IDEA + Maven + Git 快速开发 Java Web 应用

引言 今天想跟大家分享一下我主要的 Java 开发工具,我一般是这样工作的:用 IDEA 写代码,用 Maven 管理 jar 包依赖与项目打包,用 Git 进行代码版本控制。 关于这三款工具的安装与配置的过...

黄勇
2013/11/11
24.6K
17
Linux开发环境搭建之Intellij Idea安装配置

本文将会在Linux环境下安装使用Intellij Idea开发工具,然后在Idea中配置Maven和Tomcat,如果还没有Maven环境,可以参考《Linux开发环境搭建之Maven安装配置 》一文。 一、环境准备 1.Linxu桌...

MaxBill
2018/05/14
659
0

没有更多内容

加载失败,请刷新页面

加载更多

Java FOR-EACH循环

FOR-EACH循环使得代码更加的简短,也让代码更加易懂,其实他并没有加入什么新的功能。他的功能完全可以用简单的FOR循环代替。 for-each的用法: int a[] = {1,2,3,4,5,6} for(int s:a){ Syst...

无名氏的程序员
23分钟前
3
0
使用HTML5的History API

本文转载于:专业的前端网站➣使用HTML5的History API   HTML5 History API提供了一种功能,能让开发人员在不刷新整个页面的情况下修改站点的URL。这个功能很有用,例如通过一段JavaScript代...

前端老手
26分钟前
4
0
JAVA 编写redisUtils工具类,防止高并发获取缓存出现并发问题

import lombok.extern.slf4j.Slf4j;import org.springframework.data.redis.core.BoundHashOperations;import org.springframework.data.redis.core.BoundValueOperations;import org.......

huangkejie
今天
7
0
JMM内存模型(一)&volatile关键字的可见性

在说这个之前,我想先说一下计算机的内存模型: CPU在执行的时候,肯定要有数据,而数据在内存中放着呢,这里的内存就是计算机的物理内存,刚开始还好,但是随着技术的发展,CPU处理的速度越...

走向人生巅峰的大路
今天
99
0
你对AJAX认知有多少(2)?

接着昨日内容,我们几天继续探讨ajax的相关知识点 提到ajax下面几个问题又是必须要了解的啦~~~ 8、在浏览器端如何得到服务器端响应的XML数据。 通过XMLHttpRequest对象的responseXMl属性 9、 ...

理性思考
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部