在 eclipse 中启动 tomcat7:run maven 插件并调试

Start tomcat7:run maven plugin within eclipse and debug

我想在eclipse 中调试一个webapp。在调试模式下,我到达 tomcat 和 webapp 在 eclipse 内部 运行 的地步,但是 webapp 代码中的断点没有效果。

详情
webapp是一个maven神器,我在eclipse中使用m2e插件来桥接maven和eclipse。

我已经设法从 eclipse 中启动了 tomcat 服务器。 Web 应用程序在 tomcat 中很好地启动,如果我选择这样,也可以在调试模式下启动:

tomcat 服务器启动 运行 并且它的标准日志被打印到 eclipse 中的 window。我也可以方便地停止它并在调试模式下再次启动它。到目前为止,这就是我想要的和我期望的。

问题
我在我的 webapp 的代码中设置了一个断点,并从 eclipse 中以调试模式重新启动 tomcat。现在,断点不活动:它没有活动断点所具有的那个小勾号,我知道代码已执行,但它不会在断点处停止。

有两种方法可以解决此问题,您需要其中一种或两种方法。打开您的 运行 配置,然后

问题+解决方案1(分叉)
如果 tomcat 在另一个 VM 中分叉,则需要添加参数 forkMode,其值为 never。这允许 eclipse 到 "look through" 到 tomcat 的 VM 并在那里设置断点。

问题+解决方案2(来源)
在某些具有 maven 父子工件的设置中,eclipse 可能不知道某些子项目的源属于您的 webapp。其症状是在断点处停止执行,但eclipse不会自动跳转到源码位置,而是告诉你源码不明。
要解决这个问题,您需要将子项目的源添加到您的 运行 配置中:在您的 运行 配置中,转到 Source > Add... > Java Project 并选择所有包含您可能想要调试的源代码的相关项目。

转到 eclipse 调试视图,如果复选框被选中,请检查断点选项卡视图以查找您的断点。

你可以 运行 tomcat 使用 maven 命令:

mvn tomcat7:run

如果你想调试,设置这个maven选项:

export MAVEN_OPTS=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

如果你在windows,使用设置命令:

set MAVEN_OPTS=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

然后就可以用Eclipse的Remote Java Application.

调试了

希望对您有所帮助。