12
// ...some imports

public class Menu {
    final MenuMaker myClass = GWT.create(MenuMaker.class);  // ERROR

我的...gwt.xml:

...
<generate-with class="com.gwt.rebind.MenuGenerator">
  <when-type-assignable class="com.gwt.client.MenuMaker" />
</generate-with>
...

当我在 DevMode 中运行编译时,一切都运行良好,但是当我“使用 GWT 编译器构建项目”时,我得到了这个错误:

      [ERROR] Line 15:  Failed to resolve 'com.gwt.client.MenuMaker' via deferred binding
   Scanning for additional dependencies: jar:file:/C:/eclipse/plugins/com.google.gwt.eclipse.sdkbundle_2.4.0.v201208080121-rel-r42/gwt-2.4.0/gwt-user.jar!/com/google/gwt/dom/client/DOMImpl.java
      [WARN] For the following type(s), generated source was never committed (did you forget to call commit()?)
         [WARN] com.gwt.client.MenuMakerGen
   [ERROR] Cannot proceed due to previous errors

在 com.gwt.rebind.MenuGenerator 的末尾:

sourceWriter.commit(logger);

我需要帮助。

4

5 回答 5

10

检查您的所有客户端类是否具有默认的零参数构造函数。我遇到了同样的“延迟绑定”问题,结果发现我的一个类没有默认构造函数。这很奇怪,因为 GWT 编译器日志中甚至没有提到这个类。

于 2013-12-03T00:20:10.737 回答
5

检查 gwt 编译问题。讯息

[ERROR] Line 15:  Failed to resolve '...' via deferred binding

可能是由于 gwt 代码中的编译问题造成的。在我的例子中,它是一个类,它仅在应用程序的服务器端可用,但在属于应用程序“共享”部分的类中被引用。

在Java中它编译得很好,所以我在eclipse中没有错误。上述错误消息仅在使用 maven 构建时出现。仍然很难找到真正的问题,因为消息文本不是很有帮助。

事实证明,在 com.google.gwt.dev.DevMode 上运行应用程序会产生更详细的 gwt 编译日志文件(可能有人可以配置 maven 来做同样的事情?)。在这个更详细的日志的开头,有一些条目指出了上面描述的问题。更正这些问题后,“无法通过延迟绑定解决...”错误消失了。

于 2017-01-04T11:40:13.003 回答
1

检查你的model/ PojoClass应该implements Serializable

interface并且还有 Classdefault constructor无参数构造函数)。

于 2020-02-14T07:37:50.557 回答
0

在我的情况下,一些模型类没有实现 com.google.gwt.user.client.rpc.IsSerializable,这就是我得到问题中提到的错误的原因。

于 2018-01-19T09:27:25.143 回答
0

在我的情况下,资源包属性文件中与方法名称对应的键丢失,添加后问题得到解决。

于 2018-11-12T07:41:40.323 回答