我们一般都是为了解决某个问题,才去看源码的。Java体系就是这点好处,源码唾手可得。遇到问题,最后的解决方法总是可以从源码中找到。
参考了网上的文章,过程整理如下:
1. 下载和导入
官网下载编译好的: apache-tomcat-8.5.12.zip 和 对应的源码包:apache-tomcat-8.5.12-src.zip。
解压到当前文件夹,然后将 apache-tomcat-8.5.12 文件夹改名为:catalina-home
如下图:
然后在 apache-tomcat-8.5.12-src 目录下加入一个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>Tomcat8.0</artifactId> <name>Tomcat8.0</name> <version>8.0</version> <build> <finalName>Tomcat8.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>2.3</version> <configuration> <encoding>UTF-8</encoding> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <dependencies> <!-- https://mvnrepository.com/artifact/junit/junit --> <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> <!-- https://mvnrepository.com/artifact/org.apache.ant/ant --> <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</artifactId> <version>1.10.1</version> </dependency> <!-- https://mvnrepository.com/artifact/wsdl4j/wsdl4j --> <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> <!-- https://mvnrepository.com/artifact/org.eclipse.jdt.core.compiler/ecj --> <dependency> <groupId>org.eclipse.jdt.core.compiler</groupId> <artifactId>ecj</artifactId> <version>4.6.1</version> </dependency> </dependencies> </project>
然后从 Ideal 导入 maven 项目apache-tomcat-8.5.12-src
然后选择源码所在目录:D: omcat_sourceapache-tomcat-8.5.12-src
最后有个选项,将项目设置为 maven ,要选择 yes.
2. 配置
VM options 选中我们上面进行重命名的那个目录。
Main class 如果不对,也需要改成:org.apache.catalina.startup.Bootstrap
3. 运行:
会出现报错:
将 TestCookieFileter 类的内容注释掉。再次运行。
测试:
浏览器访问:localhost:8080 ,结果如下图,搞定。开启tomcat源码之路~~~~~~ SO EASY AND FUNY