文章目录
- 一、克隆源码
- 二、构建 Maven
- 1)在项目根目录中新建 pom.xml 文件
- 2)然后 Add Maven Projects
- 三、在目录中增加 home 目录
- 四、增加启动配置
- 五、其它问题
- 1)控制台乱码
- 解决
- 2)启动后访问 localhost:8080 报错
- 解决
一、克隆源码
- github搜索Tomcat源码
- fock到自己仓库,方便后续提交修改
- 如果嫌 github 慢,可以上 gitee 将 github 的仓库同步过来
- git clone
- checkout 9.0.x 的分支,最好自己新建一个分支,避免污染原分支
二、构建 Maven
1)在项目根目录中新建 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.0.x</artifactId>
<name>tomcat-9.0.x</name>
<version>9.0.x</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</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.9.5</version>
</dependency>
<dependency>
<groupId>javax.xml.rpc</groupId>
<artifactId>javax.xml.rpc-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.eclipse.jdt/ecj -->
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>ecj</artifactId>
<version>3.26.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/biz.aQute.bnd/biz.aQute.bndlib -->
<dependency>
<groupId>biz.aQute.bnd</groupId>
<artifactId>biz.aQute.bndlib</artifactId>
<version>6.4.0</version>
</dependency>
</dependencies>
<build>
<finalName>Tomcat8.5.55</finalName>
<sourceDirectory>java</sourceDirectory>
<resources>
<resource>
<directory>java</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
2)然后 Add Maven Projects
三、在目录中增加 home 目录
将外面的 conf 和 webapps 复制到 home 目录中,webapps 目录中只需保留 ROOT 目录即可
这样做的好处:
- 统一管理
- 避免污染原文件
四、增加启动配置
-
JRE:
JDK 8
-
Main Class:
org.apache.catalina.startup.Bootstrap
-
Add VM options:
-Dcatalina.base=/Users/mac/IdeaProjects/tomcat-9.0.x/home -Dcatalina.home=/Users/mac/IdeaProjects/tomcat-9.0.x/home -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/Users/mac/IdeaProjects/tomcat-9.0.x/conf/logging.properties -Dfile.encoding=utf-8
注意: 上面的
/Users/mac/IdeaProjects/tomcat-9.0.x/
的目录是我本地项目的目录,需要根据自己的实际目录来修改
五、其它问题
1)控制台乱码
解决
在方法 org.apache.tomcat.util.res.StringManager#getString(java.lang.String)
中增加如下代码:
// 日志打印时会读取系统默认的语言,将原本的 iso-8859-1 转换成 utf-8
if (str != null) {
try {
str = new String(str.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
} catch (Exception e) {
}
}
2)启动后访问 localhost:8080 报错
解决
在方法 org.apache.catalina.startup.ContextConfig#configureStart
中添加
context.addServletContainerInitializer(new JasperInitializer(), null);