一、下载tomcat源码
https://github.com/apache/tomcat/tree/8.5.x
二、建立pom
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5
6 <modelVersion>4.0.0</modelVersion>
7 <groupId>org.apache.tomcat</groupId>
8 <artifactId>Tomcat8.5</artifactId>
9 <name>Tomcat8.0</name>
10 <version>8.0</version>
11
12 <build>
13 <finalName>Tomcat8.5</finalName>
14 <sourceDirectory>java</sourceDirectory>
15 <testSourceDirectory>test</testSourceDirectory>
16 <resources>
17 <resource>
18 <directory>java</directory>
19 </resource>
20 </resources>
21 <testResources>
22 <testResource>
23 <directory>test</directory>
24 </testResource>
25 </testResources>
26 <plugins>
27 <plugin>
28 <groupId>org.apache.maven.plugins</groupId>
29 <artifactId>maven-compiler-plugin</artifactId>
30 <version>2.3</version>
31 <configuration>
32 <encoding>UTF-8</encoding>
33 <source>1.8</source>
34 <target>1.8</target>
35 </configuration>
36 </plugin>
37 </plugins>
38 </build>
39
40 <dependencies>
41 <dependency>
42 <groupId>junit</groupId>
43 <artifactId>junit</artifactId>
44 <version>4.12</version>
45 <scope>test</scope>
46 </dependency>
47 <dependency>
48 <groupId>org.easymock</groupId>
49 <artifactId>easymock</artifactId>
50 <version>3.4</version>
51 </dependency>
52 <dependency>
53 <groupId>ant</groupId>
54 <artifactId>ant</artifactId>
55 <version>1.7.0</version>
56 </dependency>
57 <dependency>
58 <groupId>wsdl4j</groupId>
59 <artifactId>wsdl4j</artifactId>
60 <version>1.6.2</version>
61 </dependency>
62 <dependency>
63 <groupId>javax.xml</groupId>
64 <artifactId>jaxrpc</artifactId>
65 <version>1.1</version>
66 </dependency>
67 <dependency>
68 <groupId>org.eclipse.jdt.core.compiler</groupId>
69 <artifactId>ecj</artifactId>
70 <version>4.5.1</version>
71 </dependency>
72
73 </dependencies>
74 </project>
编译可能有个测试类过不了。删除即可。
三、新建catalina-home目录
- 把webapp文件夹和conf文件夹copy到Catalina-home目录
- 新建空文件夹temp、log、lib
四,设置启动参数
-Dcatalina.home=catalina-home -Dcatalina.base=catalina-home -Djava.endorsed.dirs=catalina-home/endorsed -Djava.io.tmpdir=catalina-home/temp -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=catalina-home/conf/logging.properties
- main class设置为 org.apache.catalina.startup.Bootstrap
- vm option复制上面的参数主要是设置Catalina的启动目录
五、启动
至此,tomcat已经成功启动。
六、访问tomcat
发现有NPE
解决:在Bootstrap中启动jasper,修改代码,在ContextConfig中加入如下代码
context.addServletContainerInitializer(new JasperInitializer(), null);
启动成功。
来源:oschina
链接:https://my.oschina.net/u/4403345/blog/4325099