【问题标题】:Start tomcat7:run maven plugin within eclipse and debug启动tomcat7:在eclipse中运行maven插件并调试
【发布时间】:2015-05-24 06:23:40
【问题描述】:

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

详情
webapp 是一个 maven 工件,我使用 eclipse 中的 m2e 插件在 maven 和 eclipse 之间架起桥梁。

我已经设法从 Eclipse 中启动了 tomcat 服务器。 webapp 可以很好地在 tomcat 中启动,如果我选择的话,也可以在调试模式下启动:

  • 在eclipse中,右键项目
  • 运行方式 > Maven 构建...(不是“Maven 构建”)
  • 打开一个窗口。在“目标”文本字段中,输入“tomcat7:run”
  • 点击应用
  • 点击运行

tomcat 服务器开始运行,它的stdlog 打印到eclipse 中的一个窗口。我也可以方便地停止它并在调试模式下重新启动它。到目前为止,这就是我想要的,也是我期望的。

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

【问题讨论】:

  • 我知道我可以在 maven 中设置远程调试,然后在 maven 中运行 tomcat7 并使用 eclipse 远程调试连接到它。但是后来我必须分别管理启动和停止两件事,并且我不会在 eclipse 准备点击异常中看到 tomcat 的日志输出。我需要这两个优点。如果这一切都以另一种方式起作用,我也很好。
  • 你为什么不在 Eclipse 中使用 Tomcat 服务器实例,而不是依赖 Maven 插件?
  • @watery 我可以,如果我的其他方法行不通,我会的。主要原因是 maven 插件有一个配置,如果那里有什么变化,我会在通过 maven 插件启动 tomcat 时自动反映该变化。如果我在 eclipse 中配置了一个 tomcat 服务器,那么从 maven 进行的配置更改将不会对我的 eclipse 产生影响。因此,如果我这样做,与我的队友运行它的方式相比,我可能会以另一种方式运行 tomcat,因此我们可能会在某些时候遇到不同的问题,从而导致难以遵循彼此的问题描述。
  • @Calon 这看起来很有希望。今天晚些时候我会试试的。

标签: java eclipse maven debugging tomcat


【解决方案1】:

你可以用 maven 用这个命令运行 tomcat:

mvn tomcat7:run

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

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

如果你在 windows 中,使用 set 命令:

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

然后你可以使用 Eclipse 的Remote Java Application 进行调试。

希望对您有所帮助。

【讨论】:

  • 你写的所有东西以前显然是已知的;见 cmets 提问。此外,在 cmets 中指出该解决方案并不理想,并解释了原因。因此,您只是复制了此页面上的信息,而这些信息没有帮助。而且,已经有比你更好的解决方案了。对毁灭性的评论表示抱歉,但我认为值得指出。
【解决方案2】:

转到 Eclipse 调试视图,如果选中该复选框,请检查断点选项卡视图中的断点。

【讨论】:

    【解决方案3】:

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

    问题+解决方案 1(分叉)
    如果tomcat在另一个VM中被fork,那么您需要添加参数forkMode,其值为never。这允许 eclipse “查看” tomcat 的 VM 并在那里设置断点。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-09
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多