intellij idea debug到了tomcat代码就进不去

本文介绍了解决在IntelliJ IDEA中无法进入Tomcat源码调试的问题。通过正确配置pom.xml文件中的Tomcat依赖,使得Maven可以成功下载源码。文章还探讨了使用嵌入式Tomcat的优势。

问题

debug时,到了tomcat的源码就进不去,只能看到变量,看不到类。关于servlet部分的配置如下

pom.xml
<dependency>
   <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
</dependency>

分析

tomct源码在groupid为org.apache.*的依赖中,org.apache.*部分的依赖没配置,所以maven不会下载源码。
基于此,大胆推测,如果将tomcat依赖配置在pom.xml中,maven肯定会下载源码。
所以pom.xml中添加tomcat依赖,并且scope是provided,重启intellij idea,果然work了。

 <dependency>
     <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-catalina</artifactId>
      <version>8.5.28</version>
      <scope>provided</scope>
  </dependency>

这里写图片描述

后续,居然又不work了

因为maven工程中,用了parent-child模式,在parent工程pom.xml的dependencymanagement定义了

 <dependency>
     <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-catalina</artifactId>
      <version>8.5.28</version>
      <scope>provided</scope>
  </dependency>

child工程定义了groupid、artifactid

 <dependency>
     <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-catalina</artifactId>
  </dependency>

但是不work!没办法只好又加了scope,又work了,怀疑是intellij idea的bug

 <dependency>
     <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-catalina</artifactId>
      <scope>provided</scope>
  </dependency>

想了想,如有可能使用内嵌式tomcat也不错,debug tomcat源码方便,再一个不用重复安装tomcat。

最终建议

最终还是建议使用嵌入式Tomcat,既方便调试,也免去安装Tomcat的烦恼,同时还统一了Tomcat版本。

参考

cant step into app server source code
Debugging application server and application itself

公众号

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值