如何使用 Eclipse 调试旧版 GWT 代码
Posted
技术标签:
【中文标题】如何使用 Eclipse 调试旧版 GWT 代码【英文标题】:How To Debug Legacy GWT Code With Eclipse 【发布时间】:2021-08-01 03:58:45 【问题描述】:我有一个棘手的问题。我在遗留应用程序中有一些非常旧的 (1.7) GWT 代码,我需要对其进行一些调试。理想情况下,我会将代码更新为更现代的 GWT 版本,但是有一堆自定义小部件使这变得困难。因此,我需要想办法找到可以按原样处理代码的工具。
经过大量挖掘和反复试验,当我从命令行运行时,我能够获得“托管模式”来启动和运行我的应用程序。但是,当我尝试在 eclipse 中做同样的事情时,我遇到了问题。开发 shell 启动,但是当它尝试打开浏览器时,它失败并出现以下错误:
[ERROR] The browser widget class could not be instantiated
org.eclipse.swt.SWTError: XPCOM error -2147221164
at org.eclipse.swt.browser.Browser.error(Browser.java:1336)
at org.eclipse.swt.browser.Browser.<init>(Browser.java:236)
at com.google.gwt.dev.shell.BrowserWidget.<init>(BrowserWidget.java:242)
at com.google.gwt.dev.shell.moz.BrowserWidgetMoz.<init>(BrowserWidgetMoz.java:83)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.google.gwt.dev.shell.PlatformSpecific.createBrowserWidget(PlatformSpecific.java:53)
at com.google.gwt.dev.GWTShell.openNewBrowserWindow(GWTShell.java:504)
at com.google.gwt.dev.GWTShell.launchStartupUrls(GWTShell.java:465)
at com.google.gwt.dev.GWTShell.run(GWTShell.java:548)
at com.google.gwt.dev.GWTShell.main(GWTShell.java:321)
关于我在这里做错了什么有什么想法吗?有没有更好的选项来调试我的客户端代码?
我的环境: Ubuntu 18.04 (x64)
Eclispe 4.6 霓虹灯 (x86)
GWT 1.7
Java 7 (x86)
【问题讨论】:
【参考方案1】:看起来 Eclipse 在运行其内部浏览器 (XPCOM / Mozilla) 时遇到了问题。您可以将 Eclipse 配置为启动外部浏览器吗?
在最新版本的Eclipse中,你可以Preferences -> General -> Web Browser
,有“使用内部网络浏览器”选项。选择“使用外部网络浏览器”并检查外部浏览器。
【讨论】:
这是个好主意,但不是。事实上,Eclipse 甚至不允许我选择内部浏览器。该选项显示为灰色。【参考方案2】:GXT 1.x 通过运行一个包装原生浏览器小部件的 java 应用程序来运行 - 在 linux 上,这是一个旧版本的 firefox - 类似于 firefox 3.5 或更早版本。
如果没有记忆,此功能通过每个平台的不同分发来发挥作用 - 例如,在 linux 上 http://www.gwtproject.org/versions.html 有一个 1.7 的下载(1.7.1 是最新的,至少是 1.x 版本)。请注意,该页面上有一个关于 linux 下载的说明:
Linux 发行版二进制文件仅适用于 x86 架构。 GWT 托管模式需要 32 位 JVM 和库。其他 32 位架构可以从源代码构建,但不受支持,需要兼容的 Mozilla 1.7.12 构建。
您确定满足这些要求吗?
【讨论】:
以上是关于如何使用 Eclipse 调试旧版 GWT 代码的主要内容,如果未能解决你的问题,请参考以下文章
如何将 maven 托管依赖项复制到 war\web-inf\lib 中,以便我可以在 Eclipse 中以调试模式运行我的 GWT 2.0 应用程序?