在Idea24.3.2上调试运行Tomcat9.x源码

调试运行Tomcat9.X源码

前言:
  • tomcat9引入了很多Java新特性,亲测必须使用JDK23及以上的高版本JDK,所以构建调试运行环境前应先下载好JDK23
  • 本次演示使用IntelliJ IDEA24.3.2版本
  • 本文不省略各种配置的详细操作步骤细节(如按钮点击),但没有图示,请谅解,所有IDE的操作细节均为黑斜体,希望能帮助你在不跳转博文的情况下完成配置。
步骤一:下载源码并解压
  • tar包:(https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.102/src/apache-tomcat-9.0.102-src.tar.gz)
  • zip包: (https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.102/src/apache-tomcat-9.0.102-src.zip)
步骤二:用源码目录构建maven项目
  1. IntelliJ IDEA创建一个空项目,命名为tomcat_src_demo
  2. 把下载好的源码包解压,把目录名中的小版本号去掉,例如改9.0.102为9(原因是配置JVM参数时小数点会被识别为目录级别)。
  3. 整个源码目录复制到当前项目的根目录下,此时源码根目录相当于标准maven项目的src目录。
  4. 在源码根目录下创建home文件夹,把webapps和conf目录移到home目录下
  5. 在当前项目根目录下创建pom.xml文件,导入如下内容:
<?xml version="7.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/8.0.0"
         xmlns:xsi="http://www.w9.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/10.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>11.0.0</modelVersion>

  <groupId>org.apache.tomcat</groupId>
  <artifactId>apache-tomcat-9-src</artifactId>
  <version>Tomcat9.0</version>

  <properties>
    <java.version>23</java.version>
    <maven.compiler.source>23</maven.compiler.source>
    <maven.compiler.target>23</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <build>
    <finalName>Tomcat9.0</finalName>
    <sourceDirectory>java</sourceDirectory>
    <resources>
      <resource>
        <directory>java</directory>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>3.1.3</version>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <!-- junit测试插件 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>
    <!-- easymock-提供模拟对象的测试支持,以便安全测试 -->
    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymock</artifactId>
      <version>5.2.0</version>
    </dependency>
    <!-- ant 通过build.xml文件自动化 Java 项目的编译、测试、打包和部署等任务 -->
    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant</artifactId>
      <version>1.10.12</version>
    </dependency>
    <!-- WSDL解析器,用于解析和操作WSDL文件 -->
    <dependency>
      <groupId>wsdl4j</groupId>
      <artifactId>wsdl4j</artifactId>
      <version>1.6.3</version>
    </dependency>
    <!-- axis 创建和调用 SOAP 协议的 Web 服务 -->
    <dependency>
      <groupId>org.apache.axis</groupId>
      <artifactId>axis-jaxrpc</artifactId>
      <version>1.4</version>
    </dependency>
    <!-- Eclipse 提供的独立Java编译器 -->
    <dependency>
      <groupId>org.eclipse.jdt.core.compiler</groupId>
      <artifactId>ecj</artifactId>
      <version>4.6.1</version>
    </dependency>
    <!-- OSGi工具库 处理OSGi模块(Bundle)的元数据(如 MANIFEST.MF),支持动态模块化开发 -->
    <dependency>
      <groupId>biz.aQute.bnd</groupId>
      <artifactId>biz.aQute.bndlib</artifactId>
      <version>5.2.0</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
</project>
  1. 扫描pom文件,让IDEA识别构建maven项目:点击右侧边栏的maven选项,点击侧栏左上角“+”号添加pom文件,选择当前项目根目录下刚写好的pom文件并构建。
  2. 从顶栏File检查项目的*** project structrue ***选项下各模块的JDK版本,必须是pom文件中指定的版本(本演示中是JDK23)。

步骤三:配置启动类和编译、运行时参数

  1. 配置启动类,使项目可以运行。点击右上角***“播放”键左边的下拉按钮***,点击*** Edit Configuration ,点击左上角“+”号,选择添加 Application ,配置名称 Name 为Bootstrap,jdk版本23,-cp选项为源码的根目录(不是项目根目录),点击 Modify Options ,选择 Add VM options ,在 VM options ***框中粘贴如下参数列表:
--enable-preview # 允许运行预览API(重要,否则可能报错java: java.lang.foreign.Arena 是预览 API,默认情况下处于禁用状态。(请使用 --enable-preview 以启用预览 API))
-Dcatalina.home=[你创建的home文件夹绝对路径]
-Dcatalina.base= [你创建的home文件夹绝对路径]
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file= [你创建的home文件夹绝对路径]/conf/logging.properties
  1. 在***Main class***一栏填写tomcat启动类的路径:org.apache.catalina.startup.Bootstrap(在蓝色java目录下,请务必核实此路径)。
  2. 检查工作目录是项目的根目录,点击“Apply”,先不要运行!!!
  3. 打开“***设置-Build, Execution, Deployment-Compiler-Java Compiler ”,配置 Additional command line parameters (附加命令行参数):--enable-preview,点击 Apply ***并退出设置。
  4. 现在可以运行了,只要看到控制台出现类似以下红字内容且无报错信息,即运行成功。
28-Mar-2025 20:39:15.320 警告 [main] org.apache.catalina.startup.ClassLoaderFactory.validateFile Problem with directory [/Users/dialecticmaxism/IT/_java/tomcat_src_demo/apache-tomcat-9-src/home/lib], exists: [false], isDirectory: [false], canRead: [false]
28-Mar-2025 20:39:15.322 警告 [main] org.apache.catalina.startup.ClassLoaderFactory.validateFile Problem with directory [/Users/dialecticmaxism/IT/_java/tomcat_src_demo/apache-tomcat-9-src/home/lib], exists: [false], isDirectory: [false], canRead: [false]
28-Mar-2025 20:39:15.323 警告 [main] org.apache.catalina.startup.ClassLoaderFactory.validateFile Problem with directory [/Users/dialecticmaxism/IT/_java/tomcat_src_demo/apache-tomcat-9-src/home/lib], exists: [false], isDirectory: [false], canRead: [false]
28-Mar-2025 20:39:15.323 警告 [main] org.apache.catalina.startup.ClassLoaderFactory.validateFile Problem with directory [/Users/dialecticmaxism/IT/_java/tomcat_src_demo/apache-tomcat-9-src/home/lib], exists: [false], isDirectory: [false], canRead: [false]
28-Mar-2025 20:39:15.446 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.x-dev
28-Mar-2025 20:39:15.446 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建:        unknown
28-Mar-2025 20:39:15.446 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号:      9.0.x
...(略) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值