本地部署到 Intellij Tomcat 的 GWT 应用程序在 gwt-aware 客户端模块中看不到断点
GWT application deployed locally to Intellij Tomcat does not see breakpoints in gwt-aware client-module
关于申请的一些事实:
- 它由几个模块组成,其中一个是 GWT 客户端模块
- Spring 3
- GWT 2.6.1(+ 兼容 GXT)
- 被打包为 .war 并且可以部署到一个独立的 Tomcat
- Chrome 附加组件不再工作,所以直到最近我不得不依赖 Eclipse + 嵌入式 Jetty + Firefox 24 才能在 DevMode 中启动应用程序并进行调试
前几天我决定尝试在 IntelliJ IDEA 中启动它,看看调试是否可以在那里工作。
通过 IntelliJ 中的 local Tomcat
配置部署应用程序后的观察结果:
- 应用部署得很好(使用
war
或 exploded war
工件)。基本上,Intellij 从独立的 Tomcat 安装中获取 work
目录并将其移动到其安装文件夹中(例如 .IntelliJIdea2019.1/system/Tomcat/Unnamed_MYAPP
)。配置文件也被复制到 config
目录。
- Tomcat 的
webapps
目录保留在原始 Tomcat 安装中,应用程序部署在那里
起初我以为断点根本无法识别。然而,事实证明我只在 GWT 客户端模块中测试中断;当我后来尝试其他模块时 - 执行按预期停止。
现在,有趣的是,当我使用 Jetty 进行开发和调试时,如果我对 GWT 客户端模块进行了更改,我只需重新加载页面,它就会出现。
Intellij 和 Tomcat 正好相反。断点不像提到的那样工作,但也令人耳目一新,例如。通过 Update classes
(而不是完全重新部署)不起作用,而对于另一个模块它起作用。
有没有办法以某种方式调整我的工件,以便 GWT 模块也可以调试?
我的 exploded war
工件看起来像这样:
- <输出根>
- 元信息
- MANIFEST.MF
- WEB-INF
- 类
- GWT 模块编译输出
- 库
- web.xml
- webapp 目录内容
- GWT 客户端模块 GWT 编译器输出
实际上,这是一个愚蠢的情况——我原以为执行会在 gwt 感知模块的 Java 代码中设置的断点处停止——但因为它已经被转译为 Java脚本——那是不可能的。
断点在此类模块中停止的唯一方法是使用 DevMode。
关于申请的一些事实:
- 它由几个模块组成,其中一个是 GWT 客户端模块
- Spring 3
- GWT 2.6.1(+ 兼容 GXT)
- 被打包为 .war 并且可以部署到一个独立的 Tomcat
- Chrome 附加组件不再工作,所以直到最近我不得不依赖 Eclipse + 嵌入式 Jetty + Firefox 24 才能在 DevMode 中启动应用程序并进行调试
前几天我决定尝试在 IntelliJ IDEA 中启动它,看看调试是否可以在那里工作。
通过 IntelliJ 中的 local Tomcat
配置部署应用程序后的观察结果:
- 应用部署得很好(使用
war
或exploded war
工件)。基本上,Intellij 从独立的 Tomcat 安装中获取work
目录并将其移动到其安装文件夹中(例如.IntelliJIdea2019.1/system/Tomcat/Unnamed_MYAPP
)。配置文件也被复制到config
目录。 - Tomcat 的
webapps
目录保留在原始 Tomcat 安装中,应用程序部署在那里
起初我以为断点根本无法识别。然而,事实证明我只在 GWT 客户端模块中测试中断;当我后来尝试其他模块时 - 执行按预期停止。
现在,有趣的是,当我使用 Jetty 进行开发和调试时,如果我对 GWT 客户端模块进行了更改,我只需重新加载页面,它就会出现。
Intellij 和 Tomcat 正好相反。断点不像提到的那样工作,但也令人耳目一新,例如。通过 Update classes
(而不是完全重新部署)不起作用,而对于另一个模块它起作用。
有没有办法以某种方式调整我的工件,以便 GWT 模块也可以调试?
我的 exploded war
工件看起来像这样:
- <输出根>
- 元信息
- MANIFEST.MF
- WEB-INF
- 类
- GWT 模块编译输出
- 库
- web.xml
- 类
- webapp 目录内容
- GWT 客户端模块 GWT 编译器输出
实际上,这是一个愚蠢的情况——我原以为执行会在 gwt 感知模块的 Java 代码中设置的断点处停止——但因为它已经被转译为 Java脚本——那是不可能的。
断点在此类模块中停止的唯一方法是使用 DevMode。