无法通过延迟绑定解析类

时间:2012-12-25 19:25:45

标签: gwt binding deferred

// ...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);

我需要帮助。

5 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:4)

检查gwt-compile问题。消息

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

可能是由gwt代码中的编译问题引起的。在我的例子中,它是一个类,它只在应用程序的服务器端可用,但在属于&#39;共享&#39;的类中被引用。部分申请。

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

事实证明,在com.google.gwt.dev.DevMode上运行应用程序会产生更详细的gwt-compilation日志文件(可能有人可以配置maven来做同样的事情吗?)。 在这个更详细的日志的开头,有条目,它指出了上述问题。在纠正了这些问题之后,&#34;无法通过延期绑定解决......#-e;错误消失了。

答案 2 :(得分:1)

检查您的model / Pojo Class是否implements Serializable

interface以及 Class具有default constructor(无参数构造函数)。

答案 3 :(得分:0)

就我而言,某些模型类没有实现com.google.gwt.user.client.rpc.IsSerializable,这就是我收到问题中提到的错误的原因。

答案 4 :(得分:0)

在我的情况下,缺少与方法名称相对应的Resource Bundle属性文件中的键,添加后解决了问题。