本地部署到Intellij Tomcat的GWT应用程序在支持gwt的客户端模块中看不到断点

时间:2019-07-15 14:44:14

标签: debugging tomcat intellij-idea gwt

有关该应用程序的一些事实:

  • 它由几个模块组成,其中一个是GWT客户端模块
  • 春天3
  • GWT 2.6.1(+兼容的GXT)
  • 打包为.war,并且可以部署到独立的Tomcat
  • Chrome附加组件不再起作用,因此直到最近,我不得不依靠Eclipse +嵌入式Jetty + Firefox 24才能在DevMode中启动该应用并对其进行调试

前几天,我决定尝试在IntelliJ IDEA中启动它,并查看调试是否可以在那里进行。

在IntelliJ中通过local Tomcat配置部署应用程序后的观察结果:

  • 该应用程序的部署就很好(可以使用warexploded war工件进行部署)。基本上,Intellij从独立的Tomcat安装中获取work目录,并将其移至其安装文件夹(例如.IntelliJIdea2019.1/system/Tomcat/Unnamed_MYAPP)中。配置文件也将复制到config目录中。
  • Tomcat的webapps目录位于原始Tomcat安装中,并且应用程序已部署在该目录中

起初,我认为根本无法识别断点。但是,事实证明,我仅在GWT客户端模块内进行测试;当我稍后尝试其他模块时-执行按预期停止。

现在,有趣的是,当我使用Jetty开发和调试时,如果我对GWT客户端模块进行了更改,则只需重新加载页面即可。

对于Intellij和Tomcat,情况恰恰相反。断点不像所提到的那样起作用,但也可以刷新,例如。通过Update classes(而不是完全重新部署)不起作用,而对于其他模块则起作用。

是否可以通过某种方式调整工件,以便可以调试GWT模块?

我的exploded war工件看起来像这样:

  • <输出根>
  • META-INF
    • MANIFEST.MF
  • WEB-INF
      • GWT模块编译输出
    • lib
    • web.xml
  • webapp目录内容
  • GWT客户端模块GWT编译器输出

1 个答案:

答案 0 :(得分:0)

实际上,这是一个愚蠢的情况-我希望执行能够在gwt-aware模块的Java代码中设置的断点处停止,但是由于已经被转换为Javascript,所以这是不可能的。

断点在这种模块中停止的唯一方法是使用DevMode。