问题 无法通过延迟绑定解析类


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

我需要帮助。


9914
2017-12-25 19:25


起源

您可能错过了在GWT Compiler的构建路径中包含com.gwt.client.MenuMaker的jar。另请检查com.gwt.client。* gwt.xml到位(不受任何过滤器的影响)。 - SSR
MenuMaker是我的班级。我不知道deffered绑定需要哪些库,但在开发模式下所有工作。你在谈论什么过滤器? - burtsevyg
如果使用Maven .xml 文件应该放在 src/main/resources 在与您相同的包(文件夹路径)中 .java 文件。如果使用Ant,请务必添加。xml 到你的班级路径。如果使用Eclipse w / m2e支持,有时会构建路径忽略 .xml 如果被放入 src/main/resources,...通过项目的首选项修改项目的构建路径。 - Chris Phillipson


答案:


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


10
2017-12-03 00:20





检查gwt-compile问题。消息

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

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

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

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


3
2018-01-04 11:40





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


0
2018-01-19 09:27