【问题标题】:GWT problem, GWT.create(SomeClass.class) throw exceptionGWT问题,GWT.create(SomeClass.class) 抛出异常
【发布时间】:2011-06-03 11:30:53
【问题描述】:

我有一个 gwt 项目并使用方法 GWT.create(SomeClass.class) 抛出异常。 例外是:

Loading module: Webcharge
  Top URL: http://127.0.0.1:8888/Webcharge.html?gwt.codesvr=127.0.0.1:9997
  User agent: Chrome
  Remote host: wsta1:39330
  Tab key: 
  Session key: v2aC'2^b3!lQgZS6
DEBUG: Validating newly compiled units. 
  ERROR: Errors in 'jar:file:/home/devel/Downloads/gwt-2.3.0/gwt-user.jar!/com/google/gwt/editor/client/EditorDriver.java'. 
    ERROR: Line 97: No source code is available for type javax.validation.ConstraintViolation<T>; did you forget to inherit a required module?. 
  ERROR: Errors in 'jar:file:/home/devel/Downloads/gwt-2.3.0/gwt-user.jar!/com/google/gwt/editor/client/impl/BaseEditorDriver.java'. 
    ERROR: Line 67: No source code is available for type javax.validation.ConstraintViolation<T>; did you forget to inherit a required module?. 
  ERROR: Errors in 'jar:file:/home/devel/Downloads/gwt-2.3.0/gwt-user.jar!/com/google/gwt/editor/client/impl/SimpleViolation.java'. 
    ERROR: Line 40: No source code is available for type javax.validation.ConstraintViolation<T>; did you forget to inherit a required module?. 
  ERROR: Errors in 'jar:file:/home/devel/Downloads/gwt-2.3.0/gwt-user.jar!/com/google/gwt/editor/client/testing/MockSimpleBeanEditorDriver.java'. 
    ERROR: Line 108: No source code is available for type javax.validation.ConstraintViolation<T>; did you forget to inherit a required module?. 
  ERROR: Errors in 'file:/home/devel/webcharge/webapp-gwt/src/gmgsys/com/webcharge/client/DataSource.java'. 
    ERROR: Line 15: No source code is available for type gmgsys.com.webcharge.model.MyUser; did you forget to inherit a required module?. 
  ERROR: Errors in 'file:/home/devel/webcharge/webapp-gwt/src/gmgsys/com/webcharge/client/MainPanel.java'. 
    ERROR: Line 124: No source code is available for type gmgsys.com.webcharge.model.MyUser; did you forget to inherit a required module?. 
  ERROR: Errors in 'file:/home/devel/webcharge/webapp-gwt/src/gmgsys/com/webcharge/client/MyTable.java'. 
  ERROR: Errors in 'file:/home/devel/webcharge/webapp-gwt/src/gmgsys/com/webcharge/client/WebchargeService.java'. 
  ERROR: Errors in 'file:/home/devel/webcharge/webapp-gwt/src/gmgsys/com/webcharge/client/WebchargeServiceAsync.java'. 
    ERROR: Line 46: No source code is available for type gmgsys.com.webcharge.model.MyUser; did you forget to inherit a required module?. 
    ERROR: Line 13: No source code is available for type gmgsys.com.webcharge.model.MyUser; did you forget to inherit a required module?. 
  ERROR: Errors in 'jar:file:/home/devel/Downloads/gwt-2.3.0/gwt-user.jar!/javax/validation/super/javax/validation/Configuration.java'. 
    ERROR: Line 12: No source code is available for type gmgsys.com.webcharge.model.MyUser; did you forget to inherit a required module?. 
  ERROR: Errors in 'jar:file:/home/devel/Downloads/gwt-2.3.0/gwt-user.jar!/javax/validation/ConstraintViolationException_CustomFieldSerializer.java'. 
  ERROR: Errors in 'jar:file:/home/devel/Downloads/gwt-2.3.0/gwt-user.jar!/javax/validation/super/javax/validation/MessageInterpolator.java'. 
    ERROR: Line 93: No source code is available for type javax.validation.TraversableResolver; did you forget to inherit a required module?. 
    ERROR: Line 105: No source code is available for type javax.validation.ConstraintValidatorFactory; did you forget to inherit a required module?. 
    ERROR: Line 202: No source code is available for type javax.validation.ValidatorFactory; did you forget to inherit a required module?. 
  ERROR: Errors in 'jar:file:/home/devel/Downloads/gwt-2.3.0/gwt-user.jar!/javax/validation/super/javax/validation/constraints/Pattern.java'. 
    ERROR: Line 30: No source code is available for type javax.validation.ConstraintViolationException; did you forget to inherit a required module?. 
    ERROR: Line 39: No source code is available for type javax.validation.ConstraintViolation<T>; did you forget to inherit a required module?. 
    ERROR: Line 66: No source code is available for type javax.validation.metadata.ConstraintDescriptor<T>; did you forget to inherit a required module?. 
    ERROR: Line 75: No source code is available for type javax.validation.Payload; did you forget to inherit a required module?. 
  ERROR: Errors in 'jar:file:/home/devel/Downloads/gwt-2.3.0/gwt-user.jar!/javax/validation/super/javax/validation/spi/ConfigurationState.java'. 
    ERROR: Line 93: No source code is available for type javax.validation.ConstraintValidatorFactory; did you forget to inherit a required module?. 
    ERROR: Line 107: No source code is available for type javax.validation.TraversableResolver; did you forget to inherit a required module?. 
DEBUG: Rebinding com.google.gwt.core.client.impl.SchedulerImpl. 
  DEBUG: Checking rule <generate-with class='com.google.gwt.editor.rebind.SimpleBeanEditorDriverGenerator'/>. 
    WARN: Detected warnings related to 'com.google.gwt.editor.client.SimpleBeanEditorDriver'.   Are validation-api-<version>.jar and validation-api-<version>-sources.jar on the classpath?. 
    INFO: Specify -logLevel DEBUG to see all errors.. 
    WARN: Unknown type 'com.google.gwt.editor.client.SimpleBeanEditorDriver' specified in deferred binding rule. 
DEBUG: Rebinding gmgsys.com.webcharge.client.WebchargeService. 
  DEBUG: Checking rule <generate-with class='com.google.gwt.user.rebind.ui.ImageBundleGenerator'/>. 
    ERROR: Unable to find type 'gmgsys.com.webcharge.client.WebchargeService'. 
      ERROR: Hint: Previous compiler errors may have made this type unavailable. 
      ERROR: Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly. 
ERROR: Deferred binding failed for 'gmgsys.com.webcharge.client.WebchargeService'; expect subsequent failures. 
ERROR: Unable to load module entry point class gmgsys.com.webcharge.client.Webcharge (see associated exception for details). java.lang.RuntimeException: Deferred binding failed for 'gmgsys.com.webcharge.client.WebchargeService' (did you forget to inherit a required module?)
    at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:53)
    at com.google.gwt.core.client.GWT.create(GWT.java:98)
    at gmgsys.com.webcharge.client.WebchargeService$App.<clinit>(WebchargeService.java:20)
    at gmgsys.com.webcharge.client.MainPanel.<init>(MainPanel.java:22)
    at gmgsys.com.webcharge.client.Webcharge.onModuleLoad(Webcharge.java:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:396)
    at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:193)
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:510)
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352)
    at java.lang.Thread.run(Thread.java:662)
Caused by: com.google.gwt.core.ext.UnableToCompleteException: (see previous log entries)
    at com.google.gwt.dev.shell.ModuleSpace.rebind(ModuleSpace.java:595)
    at com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:455)
    at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49)
    at com.google.gwt.core.client.GWT.create(GWT.java:98)
    at gmgsys.com.webcharge.client.WebchargeService$App.<clinit>(WebchargeService.java:20)
    at gmgsys.com.webcharge.client.MainPanel.<init>(MainPanel.java:22)
    at gmgsys.com.webcharge.client.Webcharge.onModuleLoad(Webcharge.java:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:396)
    at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:193)
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:510)
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352)
    at java.lang.Thread.run(Thread.java:662)
ERROR: Failed to load module 'Webcharge' from user agent 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.57 Safari/534.24' at wsta1:39330. 

以及一些解释

Webcharge 是我的项目入口点,正如您在堆栈跟踪中看到的那样,异常被抛出 (WebchargeService.java:21) 我在那一行 私有静态 WebchargeServiceAsync ourInstance = GWT.create(WebchargeService.class);

网络充电服务

@RemoteServiceRelativePath(value = "WebchargeService")
public interface WebchargeService extends RemoteService
{
String getMessage(MyUser user);
List<MyUser> getUserList();
List<MyUser> updateUser(MyUser user) throws Exception;
List<MyUser> selectByName(String name);
String getMessage(String msg);

public static class App
{
  private static WebchargeServiceAsync ourInstance = GWT.create(WebchargeService.class);

  public static synchronized WebchargeServiceAsync getInstance()
  {
    return ourInstance;
  }
}
}

以及 WebchargeServiceAsync 的代码

public interface WebchargeServiceAsync
{
void getMessage(String msg, AsyncCallback<String> async);

void getMessage(MyUser user, AsyncCallback<String> async);

void getUserList(AsyncCallback<List<MyUser>> async);

void updateUser(MyUser user, AsyncCallback<List<MyUser>> async);

void selectByName(String name, AsyncCallback<List<MyUser>> async);
}

欢迎任何帮助:)

谢谢。

【问题讨论】:

  • 你没有其他输出告诉你 WebchartServiceAsync 的错误是什么吗?
  • 是的,您可能会在托管模式控制台中看到另一个错误,这可能是导致此问题的原因。
  • 是的,你是对的。我刚刚更新了异常,现在这就是我得到的所有输出。

标签: java gwt binding deferred


【解决方案1】:

今天我遇到了完全相同的问题。这是解决方案:

文件:validation-api-1.0.0.GA-sources.jar 和validation-api-1.0.0.GA.jar 可以在可下载的gwt sdk 中找到,在编译或执行dev 时应该在您的类路径中-模式。源 jar 至关重要,因此彼得的解决方案不起作用。

【讨论】:

  • 它必须是这个确切的版本吗?
【解决方案2】:

GWT 2.3 需要 javax.validation jar:http://mvnrepository.com/artifact/javax.validation/validation-api/1.0.0.GA

下载它并将其添加到您的项目 lib 文件夹中。

【讨论】:

  • 即使我导入现有的示例项目,我也遇到了同样的异常。例如我试过这个 - hg clone gwt-dispatch-example.googlecode.com/hg gwt-dispatch-example 但再次抛出异常执行 private final MyGinjector injector = GWT.create(MyGinjector.class);
  • 只是我的环境通常有问题。如果您有任何建议,请告诉我,我很绝望:-)
  • 尝试将此示例项目与 2.2 之前的 GWT 版本一起使用。
  • 你需要 gin-1.5-post-gwt-2.2.jar 和 GWT 2.2 和 2.3
  • 本示例项目使用 Gin 1.0。它不适用于 GWT 2.2 或 2.3。
【解决方案3】:

我遇到了类似的问题,这是由 typo

引起的

错误(抛出 Cast Exception):

private final UserService userRpcService = GWT.create(UserService.class);

正确(添加 ...Async):

private final UserServiceAsync userRpcService = GWT.create(UserService.class);

【讨论】:

    【解决方案4】:

    正如已经说明的例外:您是否忘记继承所需的模块?

    例如,“我的用户”是否可用?

    【讨论】:

    • “可用”是什么意思?是的,我有一个 bean 类 MyUser。但我不明白这条消息 - > 你忘了继承一个必需的模块吗?
    • did you forget to inherit an required module 短语总是与您的 gwt.xml 文件相关,询问您是否忘记了 任何库、jar 或外部模块。在其他情况下,当您在客户端使用一些不受支持的 java 类时,您也会收到此错误。
    【解决方案5】:

    阅读此问题并查看答案后,解决方案如下:

    如果您通过复制新的 gwt 文件手动更新库:(我们很多人都这样做)

    1. 将您的 validation-api-1.0.0.GA.jar 和 validation-api-1.0.0.GA-sources.jar 复制到 gwt-dependencies 目录中。

    2. 从类路径中删除所有 VAADIN_DOWNLOAD 变量。

    3. 使用以下条目将以下变量添加到项目的构建路径中: gwt-dev.jar、gwt-user.jar、validation-api-1.0.0.GA.jar 和 validation-api-1.0.0.GA-sources.jar。

    4. 编译小部件集

    5. 享受生活

    如果您尚未通过复制新的 gwt 文件手动更新您的库:

    1. 更新您的插件
    2. 确保文件 validation-api-1.0.0.GA.jar 和 validation-api-1.0.0.GA-sources.jar 存在于 gwt-dependencies 目录中
    3. 修改现有变量并将 2 个新变量条目(validation-api-1.0.0.GA.jar 和 validation-api-1.0.0.GA-sources.jar)添加到您的类路径中。
    4. 编译小部件集
    5. 享受生活

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-24
      • 2013-01-16
      • 1970-01-01
      相关资源
      最近更新 更多