手把手教你把Tomcat源码跑起来!
很多在学习Tomcat的时候,可能都会有像俺一样的心情,看到别人提到的一些Tomcat中的类名方法名(比如链接器中的Endpoint,Processor ,Adapter )总想自己去代码里面一看究竟,或者想去自己亲自debug看看。
但是网上的教程千篇一律,自己又不知道该看哪个,那么下面俺就亲自走一趟,把亲测可用的方法分享给大家。
首先贴出一张运行成功的图,为了证明确实是亲测有效的!!
进入正文
step 1: 去官网下载对应的Tomcat的源码包,注意是源码包
a)官网链接:https://tomcat.apache.org/
b)选择自己需要的版本,找到对应的源码进行下载
step 2:构建可以运行的文件目录
a)下载完解压后在如下的文件目录中新建catalina-home
b)将conf和webapp文件拷贝进去。注意是拷贝不是移动进去。
这样可以运行的目录就构建好了
step3:配置IDEA运行环境
a)用IDEA的open打开我们创建的tomcat-home文件夹,并添加maven支持。(右键工程→Add Framework Suppot,选择maven)
b)在生成的Maven文件中添加如下内容
<build><finalName>Tomcat8.5</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><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>
可能如下两行会飘红但是不影响运行。
<sourceDirectory>java</sourceDirectory><testSourceDirectory>test</testSourceDirectory>
到此为止就搞定了。
接下来找到Bootstrap类然后右键运行,可能是报一些测试方法的错误,将其屏蔽就好了。。这个时候顺手添加一下如下的参数
-Dcatalina.home=C:\code\apache-tomcat-8.5.54-src\catalina-home-Dcatalina.base=C:\code\apache-tomcat-8.5.54-src\catalina-home-Djava.endorsed.dirs=C:\code\apache-tomcat-8.5.54-src\catalina-home\endorsed-Djava.io.tmpdir=C:\code\apache-tomcat-8.5.54-src\catalina-home\temp-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djava.util.logging.config.file=C:\code\apache-tomcat-8.5.54-src\catalina-home\conf\logging.properties
文件路径换成你自己的即可。
再次运行。可能会报如下错误
莫慌:找到org.apache.catalina.startup.ContextConfig#webConfig这个函数,在其下面添加如下语句即可。
context.addServletContainerInitializer(new JasperInitializer(), null);
然后在运行。
可以看到tomcat运行起来了。这个时候浏览器输入:http://localhost:8080/
就可以访问Tomcat了!!
ps:有什么问题欢迎留言或者私信一起讨论交流,有问必答!
