idea如何导入tomcat源码
第一步:下载tomcat的源码
第二步:
解压源码包,写pom.xml文件
将下载好的文件解压。因为启动Tomcat还需要一些jar包,因此你可以直接将需要的jar拷贝后放在与java文件夹同级的目录下,也可以给解压后的文件夹添加一个pom文件,最终目的就是下载需要的jar。其实使用ant就能完成这些,但是对于ant不熟悉,进入解压的目录后执行ant始终报错,最后也就没使用这种方式了。
<?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</artifactId> <name>tomcat8</name> <version>8.5</version> <build> <finalName>tomcat8</finalName> <sourceDirectory>java</sourceDirectory> <!--<testSourceDirectory>test</testSourceDirectory> test 下的有些文件报错,因此将test文件夹去掉了--> <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>3.5.1</version> <configuration> <encoding>UTF-8</encoding> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>ant</groupId> <artifactId>ant</artifactId> <version>1.6.5</version> </dependency> <dependency> <groupId>org.easymock</groupId> <artifactId>easymock</artifactId> <version>3.4</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.6.1</version>--> <!--</dependency>--> <!-- https://mvnrepository.com/artifact/org.eclipse.jdt/ecj --> <dependency> <groupId>org.eclipse.jdt</groupId> <artifactId>ecj</artifactId> <version>3.14.0</version> </dependency> </dependencies> </project>
第三部:tomcat源码导入idea中
使用maven命令编译项目,在编译的时候会报错。第一个是jdk1.8的版本,没细看,直接注释掉就行。
第四步:运行Bootstrap类
启动时不行,这个时候需要配置运行参数
-Dcatalina.home=E:\sourcesdemo\apache-tomcat-8.5.57-src -Dcatalina.base=E:\sourcesdemo\apache-tomcat-8.5.57-src -Djava.endorsed.dirs=E:\sourcesdemo\apache-tomcat-8.5.57-src\endorsed -Djava.io.tmpdir=E:\sourcesdemo\apache-tomcat-8.5.57-src\temp -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=E:\sourcesdemo\apache-tomcat-8.5.57-src\conf\logging.properties
配置好了启动,发现运行报错, 访问路径 http://localhost:8080报错,后端空指针异常 原因是直接启动org.apache.catalina.startup.Bootstrap时没有加载org.apache.jasper.servlet.JasperInitializer,从而无法编译JSP。 第五步: 在ContextConfig.java中的webConfig();下添加代码:
context.addServletContainerInitializer(new JasperInitializer(),null);
ContextConfig.java和Bootstrap在同一处
|