在 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 中很好地启动,如果我选择这样,也可以在调试模式下启动:
- 在 eclipse 中,右键单击项目
- 运行 作为 > Maven 构建...(不是 "Maven build")
- a window 打开。在文本字段 "Goals" 中,输入 "tomcat7:run"
- 点击应用
- 点击运行
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
.
调试了
希望对您有所帮助。
我想在eclipse 中调试一个webapp。在调试模式下,我到达 tomcat 和 webapp 在 eclipse 内部 运行 的地步,但是 webapp 代码中的断点没有效果。
详情
webapp是一个maven神器,我在eclipse中使用m2e插件来桥接maven和eclipse。
我已经设法从 eclipse 中启动了 tomcat 服务器。 Web 应用程序在 tomcat 中很好地启动,如果我选择这样,也可以在调试模式下启动:
- 在 eclipse 中,右键单击项目
- 运行 作为 > Maven 构建...(不是 "Maven build")
- a window 打开。在文本字段 "Goals" 中,输入 "tomcat7:run"
- 点击应用
- 点击运行
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
.
希望对您有所帮助。