【问题标题】:Why don't my small code changes take effect in appengine (GAE/GWT)? (onModuleLoad() not happening?!)为什么我的小代码更改不会在 appengine (GAE/GWT) 中生效? (onModuleLoad() 没有发生?!)
【发布时间】:2011-10-17 13:17:58
【问题描述】:

我刚刚开始一个新的 GAE 项目,并且我看到自从我上次使用 SDK 以来,他们已经对 SDK 进行了一些改进。在my_server.java 中,他们在 onModuleLoad() 顶部附近有一行代码,如下所示:

final Button sendButton = new Button("Send");

我把它改成这样:

final Button sendButton = new Button("Send-X");

但改变并不需要。其实我加了一个日志行:

log.log(Level.INFO, "button set");

这也不会显示在控制台中。这让我相信我的onModuleLoad() 没有发生。然而,当我(本地)运行服务器时会出现旧按钮(“发送”),当我单击它时,所有处理程序代码似乎都正确发生。

在你告诉我清除我的缓存之前,我可能也应该告诉你我在那里的愚蠢行为。

  • 我清除了浏览器缓存(尝试使用 Chrome 和 Safari。)
  • 我重新启动了服务器。
  • 为了确定,我什至退出并重新启动了 Eclipse!
  • 然后我在war/中发现了一些缓存文件,所以我也将它们删除了。
  • 这导致我现在在服务器启动时收到此消息:

    [WARN] 未找到以下文件:/my_server/F257245F8761687253A53003BCDAB6A7.cache.html

所以,虽然我的 REAL 问题是:如何让我的代码更改(如重命名按钮)采取,但看起来我有一些小问题(缓存、触发 onModuleLoad ()) 我首先需要帮助。

谢谢!

【问题讨论】:

  • 其他代码修改是否生效?
  • 到目前为止,我无法影响代码更改(包括 log())。我的 HTML 更改确实生效。我确定这只是我缺少的一些缓存/重新启动的东西或类似的东西,但我没有看到它。请记住,我是从默认项目开始的,所以我自己还没有太多功能。
  • 您是否尝试重建您的项目(项目 -> 清理 -> 全部)?
  • 这听起来像 GWT,而不是 App Engine。
  • 我经常用 gwt 和 appengine 得到这个。似乎没有上传 GWT javascript 文件。所有其他静态文件(html、图像等)都可以。对我来说,删除target 目录并重试是有效的。

标签: java eclipse google-app-engine gwt


【解决方案1】:

我知道这个问题的发布者已经转移了,但是为了其他可能偶然发现这个问题的人......

在 GWT 中,您需要将 Java 代码编译为 JavaScript 以使其进入浏览器。你可以做到这两种方式之一。

1) 执行完整的 GWT 编译。在 Eclipse 中,您可以右键单击项目 -> Google -> GWT 编译。这会将所有 js 放在您的 webapp 目录中。然后运行|部署您的项目并通过网络浏览器访问它

2) 在 GWT 开发模式下运行,它只会即时编译您需要的 java 类。它通常更容易以这种方式开发,因为这种方法支持客户端断点。在 Eclipse 中右键单击项目 -> 运行方式|调试方式 -> Web 应用程序。那么请务必通过 GWT 提供的 URL 访问您的应用程序。只要您使用此 url 运行您的应用程序,该 url 将类似于 http://127.0.0.1:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997,您可以进行 java 更改并刷新您的应用程序的相关部分(在浏览器中)以查看更改。

【讨论】:

  • 我继续前进,但感谢您的出色回答!欢迎来到 Stack Overflow :)
猜你喜欢
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
  • 2015-01-13
  • 2016-03-30
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
相关资源
最近更新 更多