1、去官网下载Tomcat源码 地址: Apache Tomcat® - Apache Tomcat 10 Software Downloads
2.在解压好的tomcat目录下创建一个source目录,将conf和webapps目录移动到source目录中
3.创建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>tomcat10</artifactId>
<version>10.0.13</version>
<name>tomcat10</name><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>4.3</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.10.12</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>org.eclipse.jdt.core</artifactId>
<version>3.27.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>ecj</artifactId>
<version>3.27.0</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>jakartaee-migration</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>biz.aQute.bnd</groupId>
<artifactId>biz.aQute.bndlib</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.unboundid</groupId>
<artifactId>unboundid-ldapsdk</artifactId>
<version>6.0.2</version>
<scope>test</scope>
</dependency>
</dependencies><build>
<finalName>Tomcat10.0</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>
4.将源码导入idea
file ==》 【new】 ==》【Module from Existing Sources】
找到bootstrap类进行配置vm参数
将以下数据放到里面
注:目录要放置自己的
-Dcatalina.home=D:\tomcat\apache-tomcat-10.0.14-src\source
-Dcatalina.base=D:\tomcat\apache-tomcat-10.0.14-src\source
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=D:\tomcat\apache-tomcat-10.0.14-src\source\conf\logging.properties
5.运行时出现错误
运行Bootstarp时,会提示:“java: 程序包trailers不存在。”和“找不到符号 ResponseTrailers”,两个错误都出现在test文件夹。缺少的文件都在webapps/examples/WEB-INF/classes文件夹中
拷贝文件夹“webapps/examples/WEB-INF/classes/trailers”到“test”文件夹下。
拷贝文件“webapps/examples/WEB-INF/classes/util/CookieFilter.java”到“test/util”文件夹下。
6.运行tomcat 到浏览器访问 localhost:8080 网页打开如下
6.1端口被占用
去“conf/sever.xml中修改一下端口号”
6.2服务器占用
找到 “java/org/apache/catalina/startup/ContextConfig.java”这个类
在这个方法后面添加
context.addServletContainerInitializer(new JasperInitializer(),null);