和三个朋友一起,我正在用 gwt (2.6) 开发一个应用程序。几周前,我们开始使用超级开发模式。一切都很好,除了我们两个不能使用 ImageBundles。它始于我想包含一个 SuggestBox,它显然会加载一些图像。GWT 编译失败。我用谷歌搜索了很多,但我无法修复它,所以我开始做其他事情:使用 ImageResourceBundle 加载一些图像。GWT 编译失败。同样的错误。解决方法:不使用 ImageResourceBundle 加载图像。真正奇怪的是:我们中的两个人使用 Windows,一个使用 ubuntu,而我使用的是 mac。编译适用于 ubuntu 和其中一台 Windows 机器。在其他机器上,无论我们尝试什么,编译错误始终保持不变:
Compile with -strict or with -logLevel set to TRACE or DEBUG to see all errors.
Computing all possible rebind results for 'com.google.gwt.user.client.ui.MenuBar.Resources'
Rebinding com.google.gwt.user.client.ui.MenuBar.Resources
Invoking generator com.google.gwt.resources.rebind.context.InlineClientBundleGenerator
[ERROR] No @com.google.gwt.resources.ext.ResourceGeneratorType was specifed for type com.google.gwt.resources.client.ImageResource or its supertypes
[ERROR] Errors in 'com/google/gwt/user/client/ui/MenuBar.java'
[ERROR] Line 212: Failed to resolve 'com.google.gwt.user.client.ui.MenuBar.Resources' via deferred binding
Computing all possible rebind results for 'com.google.gwt.user.client.ui.impl.ClippedImageImpl.Template'
Rebinding com.google.gwt.user.client.ui.impl.ClippedImageImpl.Template
Invoking generator com.google.gwt.safehtml.rebind.SafeHtmlTemplatesGenerator
Constructing interface com.google.gwt.user.client.ui.impl.ClippedImageImpl.Template
Generating method body for image()
[ERROR] Required annotation @Template not present on interface method public abstract com.google.gwt.safehtml.shared.SafeHtml image(com.google.gwt.safehtml.shared.SafeUri clearImage, com.google.gwt.safecss.shared.SafeStyles style)
[ERROR] Errors in 'com/google/gwt/user/client/ui/impl/ClippedImageImpl.java'
[ERROR] Line 104: Failed to resolve 'com.google.gwt.user.client.ui.impl.ClippedImageImpl.Template' via deferred binding
Computing all possible rebind results for 'com.google.gwt.user.client.ui.impl.ClippedImageImpl.DraggableTemplate'
Rebinding com.google.gwt.user.client.ui.impl.ClippedImageImpl.DraggableTemplate
Invoking generator com.google.gwt.safehtml.rebind.SafeHtmlTemplatesGenerator
Constructing interface com.google.gwt.user.client.ui.impl.ClippedImageImpl.DraggableTemplate
Generating method body for image()
[ERROR] Required annotation @Template not present on interface method public abstract com.google.gwt.safehtml.shared.SafeHtml image(com.google.gwt.safehtml.shared.SafeUri clearImage, com.google.gwt.safecss.shared.SafeStyles style)
[ERROR] Errors in 'com/google/gwt/user/client/ui/impl/ClippedImageImpl.java'
[ERROR] Line 96: Failed to resolve 'com.google.gwt.user.client.ui.impl.ClippedImageImpl.DraggableTemplate' via deferred binding
[ERROR] Compiler returned false
我真的不知道该怎么办。我们检查了 eclipse 和 tomcat 中的几乎所有设置/配置文件。这都一样。有谁知道在哪里看?也许我在寻找错误的地方。我很感激你能给我的任何帮助。
附加信息(更新):
- 使用 ant 构建应用程序时,gwt-compile 运行时不会出错。
- 我们使用没有谷歌插件的eclipse。
- 在开发模式下,Web 应用程序通过 tomcat7 启动。
- 超级开发模式在 Web 应用程序中调用(在 Servlet.init() 中)。因此,我们必须将 gwt-dev jar 添加到 tomcat 启动器的类路径中。
- 在我们的 gwt 源代码中包含
new SuggestBox()
任何地方都会导致某些机器上的 gwt-compile-error。没有new SuggestBox()
一切都编译无处不在。
我认为这是一个类路径或 gwt-compile-sourcepath 问题。但是我们在我们使用的不同机器上没有看到任何差异。