tomcat-如何调试源码?

目录结构

先看下整体的目录结构是什么样子,以及每个内容的作用,然后后面讲怎么得到这些内容。
tomcat-如何调试源码?_第1张图片

下载源码

去官网下载2个东西
tomcat-如何调试源码?_第2张图片

一个是源码项目,一个是作为工作目录。

目录结构是怎么来的?

先创建一个根目录,作为项目根目录。

然后把刚才下载的2个东西,解压之后,复制到根目录。

最后,手动创建2个pom文件:
1.项目根目录

    
    
    
    4.0.0    
    gxf    
    apache-tomcat-9    
    apache-tomcat-9-source    
    1.0    
    pom    
    
        
        apache-tomcat-8.5.81-src
        

2.源码项目目录





    4.0.0
    org.apache.tomcat
    Tomcat9.0
    Tomcat9.0
    9.0

    
        Tomcat9.0
        java
        test
        
            
                java
            
        
        
            
                test
            
        
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                2.0.2

                
                    UTF-8
                    1.8
                    1.8
                
            
        
    

    
        
            ant
            ant
            1.7.0
        
        
            ant
            ant-apache-log4j
            1.6.5
        
        
            ant
            ant-commons-logging
            1.6.5
        
        
            wsdl4j
            wsdl4j
            1.6.2
        
        
            javax.xml.rpc
            javax.xml.rpc-api
            1.1
        
        
            org.eclipse.jdt.core.compiler
            ecj
            4.6.1
        
        
            junit
            junit
            4.12
            test
        


      
      
        org.easymock
        easymock
        4.3
        test
      

      
      
        com.unboundid
        unboundid-ldapsdk
        5.1.4
        test
      


    


idea配置

准备好内容之后,导入idea(导入之后,就是目录结构里展示的那样),然后需要配置一些东西。

下面的界面应该会自动生成,因为可以自动找到main方法的类。
tomcat-如何调试源码?_第3张图片

但是需要配置一下工作目录,其实是配置jvm参数:

-Dcatalina.home="/Users/~/IdeaProjects/tomcat-debug-source/apache-tomcat-8.5.81"

这就是为什么除了要下载源码项目之外,还需要下载core压缩包的原因。因为启动tomcat源码项目的时候,需要读工作目录的server.xml配置文件,然后还需要部署工作目录下的webapps目录里的项目。

启动

找到入口类,启动。

启动类是Bootstrap,其实就是包含main方法的类。
tomcat-如何调试源码?_第4张图片

但是,会报错:TestCookieFilter飘红。

tomcat-如何调试源码?_第5张图片

解决方法?把报错的测试类,注释掉。


再次启动,会发现
1.启动日志成功
2.浏览器访问成功

tomcat-如何调试源码?_第6张图片

参考

https://juejin.cn/post/684490...

https://developer.aliyun.com/...

你可能感兴趣的:(tomcat)