Java 启动tomcat7:在eclipse中运行maven插件并调试
我想在eclipse中调试webapp。我已经了解到tomcat和webapp在eclipse内部以调试模式运行,但是webapp代码中的断点没有任何效果 详细信息Java 启动tomcat7:在eclipse中运行maven插件并调试,java,eclipse,maven,debugging,tomcat,Java,Eclipse,Maven,Debugging,Tomcat,我想在eclipse中调试webapp。我已经了解到tomcat和webapp在eclipse内部以调试模式运行,但是webapp代码中的断点没有任何效果 详细信息 webapp是一个maven工件,我在eclipse中使用m2e插件来连接maven和eclipse 我已经设法从eclipse中启动了tomcat服务器。webapp是在tomcat中启动的,如果我选择的话,也是在调试模式下启动的: 在eclipse中,右键单击project 运行方式>Maven构建。。。(不是“Maven构建
webapp是一个maven工件,我在eclipse中使用m2e插件来连接maven和eclipse 我已经设法从eclipse中启动了tomcat服务器。webapp是在tomcat中启动的,如果我选择的话,也是在调试模式下启动的:
- 在eclipse中,右键单击project
- 运行方式>Maven构建。。。(不是“Maven构建”)
- 一扇窗户打开了。在文本字段“目标”中,输入“tomcat7:run”
- 单击应用
- 单击运行
我在我的webapp的代码中设置了一个断点,并在eclipse中以调试模式重新启动tomcat。现在,断点不处于活动状态:它没有活动断点所具有的小记号,我知道代码已执行,但它不会在断点处停止。有两种方法可以修复此问题,您将需要其中一种或两种方法。打开您的跑步配置,然后 问题+解决方案1(分叉)
如果tomcat在另一个VM中分叉,则需要添加参数forkMode,其值为never。这允许eclipse“查看”tomcat的VM并在那里设置断点 问题+解决方案2(来源)
在带有maven父项目和子项目的某些设置中,eclipse可能不知道某些子项目的源属于您的webapp。其症状是执行在断点处停止,但eclipse不会自动跳转到源位置,而是告诉您源位置未知。
要解决这个问题,您需要将子项目的源添加到您的运行配置中:在您的运行配置中,转到源>添加…>Java项目,并选择包含您可能要调试的源代码的所有相关项目。转到eclipse调试视图,如果选中复选框,则选中断点选项卡视图作为断点。您可以使用以下命令运行tomcat with maven:
mvn tomcat7:运行
如果要调试,请设置以下maven选项:
export-MAVEN\u OPTS=-Xrunjdwp:transport=dt\u socket,server=y,suspend=n,address=8000
如果您在windows中,请使用set命令:
set-MAVEN\u OPTS=-Xrunjdwp:transport=dt\u socket,server=y,suspend=n,address=8000
然后可以使用Eclipse的远程Java应用程序进行调试
希望这有帮助 我知道我可以在maven中设置远程调试,然后在maven中运行tomcat7,并使用eclipse远程调试连接到它。但是接下来我必须分别管理启动和停止两件事情,并且我不会看到eclipse中tomcat的日志输出准备好点击异常。我需要这两个优点。如果这一切都以另一种方式起作用,我也很好。你为什么不在Eclipse中使用Tomcat服务器实例,而不是依赖Maven插件呢?@watery我可以,如果我的另一种方式不起作用,我会的。主要原因是maven插件只有一个配置,如果有什么变化,我会在通过maven插件启动tomcat时自动反映出来。如果我在eclipse中配置了tomcat服务器,那么maven的配置更改在我的eclipse中不会产生影响。因此,如果我这样做,与我的队友运行tomcat的方式相比,我可能会以另一种方式运行tomcat,因此我们可能会在某个时候遇到不同的问题集,导致难以遵循彼此的问题描述。也许这有助于:@Calon this看起来很有希望。今天晚些时候我会试试的。你写的东西以前都是众所周知的;见对问题的评论。此外,评论中指出,该解决方案并不理想,并解释了原因。因此,您只是复制了此页面上的信息,而这并没有帮助。此外,已经有比你更好的解决方案了。很抱歉,这是一个毁灭性的评论,但我认为值得指出。