如何在Intellij Idea中调试Tomcat源代码?

tjjdgumg  于 2022-12-26  发布在  IntelliJ IDEA
关注(0)|答案(4)|浏览(241)

我们知道,Tomcat使用的是Ant构建工具,但是我们不能在Tomcat源代码根目录下的build.xml文件中使用Ant任务创建Intellij创意项目,那么如何将Tomcat源代码转换为Intellij创意项目呢?

hgncfbus

hgncfbus1#

1.从https://github.com/apache/tomcat下载源代码
1.安装apache-ant最新版本,执行命令如下:

cd tomcat/
    ant -buildfile build.xml ide-intellij

1.使用Intellij-idea打开项目

4smxwvx5

4smxwvx52#

打开项目结构-〉模块-〉依赖项,导入tomcat 7 lib,在调试模式下运行,选择tomcat-src代码进行调试。

vh0rcniy

vh0rcniy3#

据我所知,Ant和Tomcat出自同一个作者之手。这个link介绍了一种构建源代码并将其转换为Eclipse项目的方法。Junit测试可以成功地构建和运行。官方网站没有介绍将其转换为idea项目的方法,而只是一个词相同的通用方法应该适用于大多数IDE;据报道,它可以在IntelliJ IDEA中工作,例如

pw136qt2

pw136qt24#

以下是我的经验与大家分享。
一些基本的运行时安装将被跳过。在IDE上尝试打开和调试Tomcat之前,您应该安装JDK和编译器工具ANT:聪明的想法。
因为我试图调试Tomcat 8.5.x,所以建议使用JDK 1.8。
我正在使用的最新Ant版本(当前时间:2022年12月23日)。

~/IdeaProjects/tomcatsource/tomcat]$ant -version
Apache Ant(TM) version 1.10.12 compiled on October 13 2021

java版本:

~/IdeaProjects/github/tomcat]$java -version
java version "1.8.0_333"
Java(TM) SE Runtime Environment (build 1.8.0_333-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.333-b02, mixed mode)

步骤1.
从github克隆代码:
checkout 到分支8.5.x是很重要的。不要忘记这一步。

git clone git@github.com:apache/tomcat.git

cd  tomcat
git checkout 8.5.x

第二步。
使用以下ant命令:ant ide-intellijant -buildfile build.xml ide-intellij以生成IDE支持文件。

cd tomcat
ant ide-intellij

我们可以看到一些日志信息:

ant ide-intellij
Buildfile: /Users/username/IdeaProjects/tomcatsource/tomcat/build.xml

download-compile:

testexist:
     [echo] Testing  for /Users/username/tomcat-build-libs/commons-daemon-1.3.3/commons-daemon-1.3.3.jar

downloadgz-2:

testexist:
     [echo] Testing  for /Users/username/tomcat-build-libs/ecj-4.6.3/ecj-4.6.3.jar

downloadfile-2:

extras-prepare:

extras-webservices-prepare:

testexist:
     [echo] Testing  for /Users/username/tomcat-build-libs/jaxrpc-1.1-rc4/geronimo-spec-jaxrpc-1.1-rc4.jar

setproxy:

downloadfile:

testexist:
     [echo] Testing  for /Users/username/tomcat-build-libs/wsdl4j-1.6.3/wsdl4j-1.6.3.jar

setproxy:

downloadfile:

download-test-compile:

testexist:
     [echo] Testing  for /Users/username/tomcat-build-libs/junit-4.13.2/junit-4.13.2.jar

setproxy:

downloadfile:

testexist:
     [echo] Testing  for /Users/username/tomcat-build-libs/hamcrest-2.2/hamcrest-2.2.jar

setproxy:

downloadfile:

testexist:
     [echo] Testing  for /Users/username/tomcat-build-libs/easymock-4.3/easymock-4.3.jar

setproxy:

downloadfile:

testexist:
     [echo] Testing  for /Users/username/tomcat-build-libs/cglib-3.3.0/cglib-nodep-3.3.0.jar

setproxy:

downloadfile:

testexist:
     [echo] Testing  for /Users/username/tomcat-build-libs/objenesis-3.3/objenesis-3.3.jar

setproxy:

downloadfile:

testexist:
     [echo] Testing  for /Users/username/tomcat-build-libs/unboundid-6.0.6/unboundid-ldapsdk-6.0.6.jar

setproxy:

downloadfile:

ide-intellij:
     [echo] IntelliJ IDEA project directory created. Please create PATH VARIABLES for
     [echo]
     [echo]       ANT_HOME          = /usr/local/q/apache-ant-1.10.12
     [echo]       TOMCAT_BUILD_LIBS = /Users/username/tomcat-build-libs
     [echo]

BUILD SUCCESSFUL
Total time: 0 seconds

有两个非常重要的信息:

  1. ant将自动下载TOMCAT构建库到目录:${user.base}/tomcat-build-libs,这些jar文件是Tomcat的编译依赖项。
    1.我们应该创建两个路径变量
  • 一个是:ANT_HOME
  • 另一个是TOMCAT构建库

步骤3。
使用idea打开tomcat根目录。
在这一步中,你应该已经安装了ant插件。2在这一点上,你项目将被自动识别:IDE将正确标记源代码、资源文件等

虽然IDE可以正确识别项目,但我也直接使用命令行进行项目编译和其他相关操作,因为ant似乎没有像maven那样为相应的操作给予足够的日志信息。
第四步。
配置库和依赖项。
如果您的项目没有正确添加lib信息,您可以手动添加lib依赖到您的项目中,据我所知,tomcat将依赖于JAR的两部分,一个是从TOMCAT_BUILD_LIBS路径变量指定的目录下载的jar包,另一个依赖是ant工具的lib目录:${ANT_HOME}/库文件

注意:这些依赖项可能是自动添加的。当我第一次用ide打开tomcat项目时,Ide为我添加了这些依赖项,但由于PATH VARIABLES丢失,lib PATH不正确。因此如果您的路径无效,您可以手动修复它。
步骤5。
配置调试配置。
关键提示:
1.启动类:org.apache.catalina.startup.Bootstrap,我们可以直接用这个启动类运行/debug Tomcat。

  1. Catalina .主虚拟机参数:这将告诉tomcat在哪里加载web资源,就像:jsp /类文件/ servlet等等。

步骤6。
您好世界:
我们可以访问URL:http://localhost:8080/manager/html,最后我们将找到URL:http://localhost:8080/examples/servlets/servlet/HelloWorldExample,我们将看到结果:

最后.我们得到的网址:http://localhost:8080/examples/servlets/servlet/HelloWorld示例
您可以自己调试它。

注意:hello world源代码位于:webapps/examples/WEB-INF/classes/HelloWorldExample.java和默认的编译配置。你不能输入中文字符。这是因为默认的编码是不正确的。你可以编辑它自己:
文件:build.xml和行:1192

<!-- Build classes for examples webapp -->
    <mkdir dir="${tomcat.build}/webapps/examples/WEB-INF/classes"/>
    <javac   srcdir="webapps/examples/WEB-INF/classes"
             destdir="${tomcat.build}/webapps/examples/WEB-INF/classes"
             debug="${compile.debug}" deprecation="${compile.deprecation}"
             release="${compile.release}"
             classpath="${tomcat.classes}"
             encoding="UTF-8"
             includeantruntime="false">
    </javac>

相关问题