Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 启动tomcat7:在eclipse中运行maven插件并调试_Java_Eclipse_Maven_Debugging_Tomcat - Fatal编程技术网

Java 启动tomcat7:在eclipse中运行maven插件并调试

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构建

我想在eclipse中调试webapp。我已经了解到tomcat和webapp在eclipse内部以调试模式运行,但是webapp代码中的断点没有任何效果

详细信息
webapp是一个maven工件,我在eclipse中使用m2e插件来连接maven和eclipse

我已经设法从eclipse中启动了tomcat服务器。webapp是在tomcat中启动的,如果我选择的话,也是在调试模式下启动的:

  • 在eclipse中,右键单击project
  • 运行方式>Maven构建。。。(不是“Maven构建”)
  • 一扇窗户打开了。在文本字段“目标”中,输入“tomcat7:run”
  • 单击应用
  • 单击运行
tomcat服务器启动并运行,它的stdlog被打印到eclipse中的一个窗口中。我还可以方便地停止它,并在调试模式下再次启动它。到目前为止,这是我想要的,也是我期望的

问题

我在我的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看起来很有希望。今天晚些时候我会试试的。你写的东西以前都是众所周知的;见对问题的评论。此外,评论中指出,该解决方案并不理想,并解释了原因。因此,您只是复制了此页面上的信息,而这并没有帮助。此外,已经有比你更好的解决方案了。很抱歉,这是一个毁灭性的评论,但我认为值得指出。