1

我正在使用 GWT 开发 Web UI。虽然只使用我可以使用 Firefox 扩展从 Eclipse 调试的小部件,但现在我正在将 UI 与其他 OSGi 捆绑包集成,我无法使用此解决方案。

为了部署 GWT 应用程序,我创建了 .war 并使用BND将其转换为 OSGi 包。然后我使用 Pax Runner 和 Pax Web 启动带有所有捆绑包的 OSGi 容器,并且应用程序可以正常工作,但是当生成的 javascript 代码出现问题时,我没有任何像样的输出错误或调试工具。

有什么方法可以从 OSGi 以“调试模式”启动 GWT 应用程序?

在这种情况下还有什么其他的想法可以帮助吗?

更新:是否可以com.google.gwt.dev.DevMode使用来自的浏览器连接器实例化或其部分Activator

4

2 回答 2

1

我终于设法使用 OSGi、GWT 和可选的 eclipse 启动开发模式。该解决方案是在-noserverGWT 开发模式的标志上,它在应用程序运行时不知道代码的变化,但它可以用于调试已编译的代码并接收异常跟踪。

我还设法在没有 eclipse 的情况下运行开发 shell,但如果您对这个解决方案不感兴趣,可以直接跳转到 eclipse 集成部分。

没有 Eclipse(只有异常,没有调试)

您需要了解以下信息:

  • 你的来源在哪里 ( $SRC)
  • 你在哪里有你的 GWT 库($GWT_PATH),特别是gwt-user.jargwt-dev.jar.
  • (可选)您的 HTTP OSGi 服务器为应用程序提供服务的端口 ( $PORT)。
  • 应用程序的启动 url ( $URL)
  • 包含应用程序的 .gwt.xml 文件的包 ( $PACKAGE)。

然后你需要运行:

java -cp $SRC:$GWT_PATH/gwt-user.jar:$GWT_PATH/gwt-dev.jar \
    com.google.gwt.dev.DevMode -noserver -port $PORT \
    -startupUrl $URL $PACKAGE

例如:

java -cp src/:lib/gwt-2.0.3/gwt-user.jar:lib/gwt-2.0.3/gwt-dev.jar \
    com.google.gwt.dev.DevMode -noserver -port 8080 \
    -startupUrl httplocalgui.html es.warp.samples.httplocalgui

最后,您只需要像往常一样部署您的应用程序,在我的示例中,我使用默认端口 8080 使用 pax-runner 和 pax-web 进行部署。

使用日食

  1. 打开项目的调试配置
  2. 转到服务器选项卡并取消选中“运行内置服务器”
  3. 转到属性选项卡并添加“ -port 8080”(如果 8080 是您的 Web 容器使用的端口)。我认为没有内置服务器的这个参数仅用于创建开发模式生成以调用浏览器的url(或elipse用于生成可以复制并粘贴到浏览器地址栏中的url)。
  4. 部署您的应用程序。
  5. 从安装了 GWT 扩展的浏览器访问它(不要忘记添加?gwt.codesvr=127.0.0.1:9997
于 2010-06-21T11:14:02.643 回答
0

我最近遇到了同样的问题,不幸的是我没有找到任何好的解决方案。

最终,我创建了我在客户端代码中使用的所有 GWT 服务的模拟实现。当我需要调试客户端代码时,我只是切换到这些服务,而不是在下面使用 OSGi 的真实服务。然后在 Eclipse 中,我可以在调试模式下运行 GWT 应用程序。这远非完美,需要一些模拟工作,但它对我有用(至少现在)。

于 2010-06-17T10:20:01.440 回答