如何调试使用Embedded Tomcat的Spring应用关联的Tomcat源码?
调试自定义修改的Embedded Tomcat源码(ANT构建)
一、编译带调试信息的自定义Tomcat源码
- 确保你修改的Tomcat源码版本和应用中使用的Embedded Tomcat版本完全一致(包括分支、tag)
- 在Tomcat源码的ANT构建脚本中,给
javac任务添加调试参数:debug="true"和debuglevel="lines,vars,source",保证编译出的Jar包含完整调试符号 - 执行Tomcat源码的ANT编译任务(通常是
ant compile或ant dist),生成自定义的Tomcat核心Jar包(比如tomcat-embed-core-xxx.jar、tomcat-embed-jasper-xxx.jar等)
二、调整应用的ANT构建脚本
- 移除原有官方Embedded Tomcat的依赖引用
- 将编译好的自定义Tomcat Jar包加入应用classpath,示例配置:
<path id="project.classpath"> <!-- 其他业务依赖 --> <fileset dir="lib/custom-tomcat" includes="*.jar"/> </path> - 确保构建时优先加载本地自定义Jar,避免拉取官方依赖导致冲突
三、配置应用启动的调试参数
- 在ANT的应用启动任务中添加JVM调试参数,允许IDE连接调试:
<java classname="com.yourpackage.ApplicationBootstrap" fork="true"> <classpath refid="project.classpath"/> <jvmarg value="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"/> <!-- 其他应用启动参数 --> </java>suspend=n表示应用启动后不暂停,若需在启动初期断点调试,可改为suspend=yaddress=5005为调试端口,可按需修改
四、在IDE中关联源码并启动调试
- 导入ANT构建的项目到你的IDE(Eclipse/IDEA)
- 配置远程调试连接:指定调试端口为5005,连接类型选择Socket Attach
- 关联自定义Tomcat源码:
- Eclipse:右键项目 → Properties → Java Build Path → Source → Add Folder,选择Tomcat源码的src目录
- IDEA:File → Project Structure → Libraries → 找到自定义Tomcat Jar → 点击"+"添加源码目录,选中你修改的Tomcat源码根目录
- 执行ANT的应用启动任务,再在IDE中启动调试连接,即可在修改的Tomcat源码中设置断点调试
注意事项
- 每次修改Tomcat源码后,需重新编译生成Jar并替换应用中的对应Jar,再重启应用调试
- 确保应用classpath中不同时存在官方Tomcat Jar和自定义Jar,避免类加载冲突
- 若出现源码与字节码不匹配的问题,检查Tomcat编译时的调试参数是否正确,以及IDE关联的源码是否为最新修改版本
内容的提问来源于stack exchange,提问作者RoshiDil
相关产品推荐
相关产品推荐

