如何使用 Eclipse 调试遗留 GWT 代码

问题描述

我有一个棘手的问题。我在遗留应用程序中有一些非常旧的 (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)

解决方法

Eclipse 似乎在运行其内部浏览器 (XPCOM/Mozilla) 时遇到问题。您可以将 Eclipse 配置为启动外部浏览器吗?

在最新版本的 Eclipse 中,您可以Preferences -> General -> Web Browser,有“使用内部网络浏览器”选项。改为选择“使用外部网络浏览器”并检查外部浏览器。

,

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 构建。

您确定您满足这些要求吗?