IDEA导入tomcat源码遇到的问题及解决方案
搞了挺长时间,做一个详细的记录
- 注意:如果按照以下的操作步骤操作一般不会报错,所以请按照步骤顺序操作操作,否则一大堆莫名其妙的问题。
- 以下的7.0.96与8.5.49都测试过步骤相同
- 参考资料:https://www.cnblogs.com/nalanshawn/p/9381972.html
准备工作
下载Tomcat源码与ant安装文件(网上教程很多,默认下载安装即可,以下简单叙述)
Tomcat下载地址:https://tomcat.apache.org/download-70.cgi
ant下载地址:https://ant.apache.org/bindownload.cgi
(我下的是这个)
- ant进行环境变量配置
解压后的ant文件
- 配置环境变量(三个部分)
系统变量中新建:ANT_HOME,变量值:解压后的ant路径
系统变量中新建:classpath,变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
编辑path系统变量:添加ant解压后的路径
配置好之后使用cmd命令查看是否安装完成
此处也可以直接输入ant进行测试是否安装配置成功,会报错,这里忘记截图了,将报错信息直接复制到百度,搜索有很多解决方案。 - 新建配置文件pom.xml,catalina-home
在解压的源代码目录下新建文件,如下图
pom文件内容如下:注意:其中Tomcat版本与实际使用的保持一直,此处时Tomcat7.0,如果是8.0就同步修改
<?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>tomcat7</artifactId>
<name>tomcat7</name>
<version>7.0</version>
<build>
<finalName>tomcat7</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.7</source>
<target>1.7</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.2.2</version>
</dependency>
<dependency>
<groupId>io.codis.jodis</groupId>
<artifactId>jodis</artifactId>
<version>0.5.0</version>
</dependency>
</dependencies>
</project>
- 运行ant命令获取catalina-home的文件夹配置
在源代码目录下直接运行cmd,然后运行ant命令,会在当前目录下生成** output/build**目录,输入ant命令后回下载一些文件,耐心等待直到下完位置估计三分钟左右。
下载完成
将output/build目录下的所有文件复制到catalina-home文件夹下
- 以上准备工作完成,后面就是需要在IDEA中导入源代码
IDEA导入源代码
导入源码
导入项目时注意使用如下方式,否则后面一大堆问题(应该还有其他方式,但是我只会这一种)。
后面一路默认即可。
打开idea使用import project导入源码
** 注意:此处一定使用下图中的界面导入,如果直接打开回显示找不到包,后面遇到给大家再说(可能还有其他办法,我不是专业搞java的还是老老实实来,不然后面一个问题卡好久)**
导入之后默认操作即可
导入成功开始进行必要的配置
IDEA配置
1,名字随意起,此处我用的是MyTomcat
2,Main Class输入:org.apache.catalina.startup.Bootstrap(** 注意:之前说的导入源码必须使用import project,否者这里一直报错,找不到catalina**)
3,输入catalina-home的路劲,例如我的是:E:\xxxxx\tomcat\apache-tomcat-7.0.96-src\catalina-home,直接输入:
-Dcatalina.home=“E:\xxxxx\tomcat\apache-tomcat-7.0.96-src\catalina-home”
4,Use classpath of module和pom文件中设置的Tomcat版本一直,不一致会无法成功创建application, 一般会自动对应pom.xml文件中设置的;选择你解压的源码即可(注意对照你的文件和此处版本相同)
5,选择好jre
- 以下三个文件逐个设置
1,打开java源码,找到Bootstrap文件找到main函数,修改源码添加测试代码确定程序启动了。
public static void main(String args[]) {
System.out.println("项目开始启动===============================");
if (daemon == null) {
// Don't set daemon until init() has completed
Bootstrap bootstrap = new Bootstrap();
try {
2,将test文件夹直接删除(不知到为什么这么做,搜了很多文档都让删掉,那就删掉了),不删除后面一直报错。
3,设置pom.xml文件,如果不设置汇报错
点击view->tool windows->Maven project
先点击刷新,出现以下文件,我们也能看到pom.xml文件图标也变了
运行之后回下载部分文件,一直等到右上角的红色方框变成灰色,即可
运行程序
- 上面配置完成后就可以直接启动项目,在如下路径找到文件,/java/org.apache.catalina.startup.Bootstrap.java,找到main函数,加一句代码
System.out.println("项目开始启动===============================");
方便我们看程序是否启动了。
public static void main(String args[]) {
System.out.println("项目开始启动===============================");
synchronized (daemonLock) {
if (daemon == null) {
// Don't set daemon until init() has completed
Bootstrap bootstrap = new Bootstrap();
try {
bootstrap.init();
} catch (Throwable t)
第一次运行会包一些告警,在运行的时候会出现好多文件已过时等等一些内容不用管(不报错就行)。
让后我们将程序直接跑起来,我们看到程序直接启动了。
然后直接访问,输入:**http://localhost:8080/**网页显示。,出现经典画面。
对自己设置的测试网页进行加载(这个地方也搞了好久最后发现是路径错了)
*** 注意:测试网页的war包放在catalina-home\webapps这个目录下之前目录放错了怎么都出不来
运行测试war包,显示成功http://localhost:8080/webtexst/*