学源码,当然是要先把环境搭建好咯。下面跟着杰哥一起搭建环境吧~
-
首先到tomcat官网下载 src 和 部署包。
-
下载后解压src 包和 bin包。
-
在src包中添加pom.xml文件,引入需要的依赖。
在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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.tomcat</groupId>
<artifactId>apache-tomcat-8.5.50-src</artifactId>
<name>Tomcat8.5</name>
<version>8.5</version>
<build>
<!--指定源目录-->
<finalName>Tomcat8.5</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>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<!--Tomcat是java开发的,封装了很多新功能,它需要依赖一些基础的jar包-->
<dependencies>
<!--远程过程调用工具包-->
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc</artifactId>
<version>1.1</version>
</dependency>
<!--soap协议处理工具包-->
<dependency>
<groupId>javax.xml.soap</groupId>
<artifactId>javax.xml.soap-api</artifactId>
<version>1.4.0</version>
</dependency>
<!--解析webservice的wsdl文件工具-->
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.1</version>
</dependency>
<!--Eclipse Java编译器-->
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.5.1</version>
</dependency>
<!--ant管理工具-->
<dependency>
<groupId>ant</groupId>
<artifactId>ant</artifactId>
<version>1.7.0</version>
</dependency>
<!--easymock辅助单元测试-->
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.4</version>
</dependency>
</dependencies>
</project>
- 启动idea,导入该项目,并将它转成maven工程。
- tomcat是一个java se工程,在config中配置启动类:
其中,vm option的具体配置如下:
-Dcatalina.home=E:/Item/apache-tomcat-8.5.50-src/source
-Dcatalina.base=E:/Item/apache-tomcat-8.5.50-src/source
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=E:/Item/apache-tomcat-8.5.50-src/source/conf/logging.properties
- 保存好。如果现在启动会因为jsp没有解析报错,所以需要添加jsp 的解析,如下:
在ContextConfig的类中configureStart 方法添加 初始化jsp解析引擎:
//位置:package org.apache.catalina.startup#configureStart
//初始化jsp解析引擎-japser
context.addServletContainerInitializer(new JasperInitializer(), null);
- 启动tomcat ,可以访问到tomcat的页面了。
控制台乱码解决
杰哥总结了3种方法,读者按需配置:
-
设置语言环境:
在如上的第6步的vm option 添加如下配置,将环境改成英文环境,避免乱码:
-Dcatalina.home=E:/Item/apache-tomcat-8.5.50-src/source
-Dcatalina.base=E:/Item/apache-tomcat-8.5.50-src/source
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=E:/Item/apache-tomcat-8.5.50-src/source/conf/logging.properties
-Dfile.encoding=UTF-8
-Duser.language=en
-Duser.region=US
-
修改如下两个地方的编码:
-
pom 的jdk 修改成11,并做好jdk11 的环境安装配置(未尝试)
<build>
<!--指定源目录-->
<finalName>Tomcat8.5</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>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
</build>