无法通过延迟绑定解析类

bur*_*vyg 12 gwt binding deferred

// ...some imports

public class Menu {
    final MenuMaker myClass = GWT.create(MenuMaker.class);  // ERROR
Run Code Online (Sandbox Code Playgroud)

我的... gwt.xml:

...
<generate-with class="com.gwt.rebind.MenuGenerator">
  <when-type-assignable class="com.gwt.client.MenuMaker" />
</generate-with>
...
Run Code Online (Sandbox Code Playgroud)

当我在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
Run Code Online (Sandbox Code Playgroud)

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

sourceWriter.commit(logger);
Run Code Online (Sandbox Code Playgroud)

我需要帮助.

mac*_*ekb 10

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


小智 5

检查 gwt 编译问题。消息

[ERROR] Line 15:  Failed to resolve '...' via deferred binding
Run Code Online (Sandbox Code Playgroud)

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

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

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