编译并运行Apache Tomcat8.5源码
原文地址: https://www.cnblogs.com/-beyond/p/14256711.html
下载Tomcat
下载地址:https://tomcat.apache.org/download-80.cgi
在最下面的Source Code Distributions下面,下载tar.gz或者zip包,然后解压
文件的选取
保留conf、java、webapps目录,其余文件可以删除
整理后,项目结构如下图所示(pom文件时我自己添加的):
添加为maven项目
上面导入的项目,并不是maven项目,所以创建一个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>apache-tomcat</artifactId> <version>8.5</version> <dependencies> <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</artifactId> <version>1.10.4</version> </dependency> <dependency> <groupId>wsdl4j</groupId> <artifactId>wsdl4j</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>javax.xml</groupId> <artifactId>jaxrpc-api</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>org.eclipse.jdt.core.compiler</groupId> <artifactId>ecj</artifactId> <version>4.5.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> </dependency> </dependencies> <build> <finalName>apache-tomcat</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.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> </project>
添加pom.xml文件后,选中pom.xml,然后将其添加为maven项目,如下图所示:
进行编译项目
直接使用IDEA右边栏的maven compile
Tomcat启动类
项目已经导入为maven项目了,但是项目此时还不能运行,因为java代码的执行入口是main方法,所以需要先找到main方法
而Tomcat的启动入口则是在java目录下的org.apache.catalina.startup.Bootstrap类:
上面虽然找到了入口main方法,但是尝试启动main方法时,是不能正常启动tomcat,需要设置一些执行参数(配置)
设置Tomcat配置信息
执行的时候,需要设置一下几项:
-Dcatalina.home=/Users/ganlixin/code/java-code-all/apache-tomcat -Dcatalina.base=/Users/ganlixin/code/java-code-all/apache-tomcat -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/Users/ganlixin/code/java-code-all/apache-tomcat/conf/logging.properties
配置的catalina.home和catalina.base都是项目的根目录
后面两个配置则是对日志进行配置(使用的log manager,以及日志的配置文件)
添加启动配置
创建一个配置配置,如下图所示,也就是将上面的启动类和启动参数设置一下
启动项目
上面的启动项加好后,直接点击运行即可:
上面有乱码,这是因为编码的问题,可以参考:https://www.cnblogs.com/-beyond/p/14258736.html
上面运行后的日志可以看出,tomcat已经成功启动了,监听8080端口。
访问Tomcat
使用浏览器访问localhost:8080,会看到一个异常栈
上面这个报错是因为JSP解析器没有初始化。
添加JasperInitializer
上面的报错解决方式,可以在org.apache.catalina.startup.ContextConfig类中的configureStart方法中,添加一下JSP解析器初始化即可
context.addServletContainerInitializer(new JasperInitializer(), null);
上面这行代码加载webconfig()后面即可。
保存后重新编译启动项目
上面那行代码加好后保存,然后重新编译项目,启动项目后,重新访问localhost:8080,即可正常访问tomcat,如下页面所示:
原文地址: https://www.cnblogs.com/-beyond/p/14256711.html