Sunday, 24 February 2013

Unable to load module entry point class com.google.gwt.user.client.UserAgentAsserter

gwt Issue#7233 : On Dev mode Tab 

11:57:14.507 [ERROR] [eccount] Unable to load module entry point class com.google.gwt.user.client.UserAgentAsserter (see associated exception for details)
java.lang.RuntimeException: Deferred binding failed for 'com.google.gwt.user.client.UserAgentAsserter$UserAgentProperty' (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:97)
    at com.google.gwt.user.client.UserAgentAsserter.onModuleLoad(UserAgentAsserter.java:44)
    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:200)
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:525)
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
    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:97)
    at com.google.gwt.user.client.UserAgentAsserter.onModuleLoad(UserAgentAsserter.java:44)
    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:200)
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:525)
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
    at java.lang.Thread.run(Thread.java:662)


Stacktrace on eclipse console

Exception in thread "Thread-0" java.lang.NullPointerException
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.JavaScriptException.getName0(JavaScriptException.java)
at com.google.gwt.core.client.JavaScriptException.getName(JavaScriptException.java:64)
at com.google.gwt.core.client.JavaScriptException.init(JavaScriptException.java:179)
at com.google.gwt.core.client.JavaScriptException.getMessage(JavaScriptException.java:162)
at com.google.gwt.dev.util.log.AbstractTreeLogger.getStackTraceAsString(AbstractTreeLogger.java:70)
at com.google.gwt.dev.shell.remoteui.ViewerServiceClient.generateLogData(ViewerServiceClient.java:296)
at com.google.gwt.dev.shell.remoteui.ViewerServiceClient.addLogEntry(ViewerServiceClient.java:118)
at com.google.gwt.dev.shell.remoteui.ViewerServiceTreeLogger.sendEntry(ViewerServiceTreeLogger.java:158)
at com.google.gwt.dev.shell.remoteui.ViewerServiceTreeLogger$PendingLog.send(ViewerServiceTreeLogger.java:72)
at com.google.gwt.dev.shell.remoteui.ViewerServiceTreeLogger.initLogHandle(ViewerServiceTreeLogger.java:134)
at com.google.gwt.dev.shell.remoteui.ViewerServiceTreeLogger$1.onDone(ViewerServiceTreeLogger.java:145)
at com.google.gwt.dev.shell.remoteui.ViewerServiceTreeLogger$1.onDone(ViewerServiceTreeLogger.java:143)
at com.google.gwt.dev.shell.remoteui.ViewerServiceClient$1.onDone(ViewerServiceClient.java:96)
at com.google.gwt.dev.shell.remoteui.ViewerServiceClient$1.onDone(ViewerServiceClient.java:94)
at com.google.gwt.dev.shell.remoteui.MessageTransport$PendingRequest.setResponse(MessageTransport.java:124)
at com.google.gwt.dev.shell.remoteui.MessageTransport.processServerResponse(MessageTransport.java:423)
at com.google.gwt.dev.shell.remoteui.MessageTransport.processMessage(MessageTransport.java:399)
at com.google.gwt.dev.shell.remoteui.MessageTransport.access$400(MessageTransport.java:44)
at com.google.gwt.dev.shell.remoteui.MessageTransport$3.run(MessageTransport.java:322)
at java.lang.Thread.run(Thread.java:662)



SOLUTION
UserAgentAsserter (as listed below) is actually a Helper class, which, during startup, asserts that the specified user.agent. So, issue is related to user.agent.

package com.google.gwt.user.client;

import com.google.gwt.core.client.EntryPoint;

import com.google.gwt.core.client.GWT;

/**

 * Helper class, which, during startup, asserts that the specified user.agent
 * selection property value indeed matches the expected value for this browser /
 * user agent, thus avoid long hours debugging strange error messages when a
 * single user agent compile, typically created for testing purposes, ends up
 * being executed in the wrong browser.
 */
public class UserAgentAsserter implements EntryPoint {

  /**

   * Interface to provide both the compile time and runtime
   * <code>user.agent</code> selection property value.
   */
  interface UserAgentProperty {
    boolean getUserAgentRuntimeWarning();
    
    String getCompileTimeValue();

    String getRuntimeValue();

  }

  public void onModuleLoad() {

    UserAgentProperty impl = GWT.create(UserAgentProperty.class);
    if (!impl.getUserAgentRuntimeWarning()) {
      return;
    }
    
    String compileTimeValue = impl.getCompileTimeValue();
    String runtimeValue = impl.getRuntimeValue();

    if (!compileTimeValue.equals(runtimeValue)) {

      displayMismatchWarning(runtimeValue, compileTimeValue);
    }
  }

  /**

   * Implemented as a JSNI method to avoid potentially using any user agent
   * specific deferred binding code, since this method is called precisely when
   * we're somehow executing code from the wrong user.agent permutation.
   */
  private native void displayMismatchWarning(String runtimeValue,
      String compileTimeValue) /*-{
    $wnd.alert("ERROR: Possible problem with your *.gwt.xml module file."
        + "\nThe compile time user.agent value (" + compileTimeValue
        + ") does not match the runtime user.agent value (" + runtimeValue
        + "). Expect more errors.\n");
  }-*/;
}

I tried removing src/main/webapp/gwt-unitCache/

$ ls -l eccount-server/src/main/webapp/
total 48
drwxrwxr-x 3 prayag prayag 4096 Feb 20 19:11 eccount
drwxrwxr-x 2 prayag prayag 4096 Jan 30 14:59 gwt-unitCache
drwxrwxr-x 5 prayag prayag 4096 Feb 18 15:55 images
drwxrwxr-x 2 prayag prayag 4096 Jan 30 14:59 js
drwxrwxr-x 2 prayag prayag 4096 Jan 30 16:12 styles
drwxrwxr-x 7 prayag prayag 4096 Feb 25 10:23 WEB-INF

 $ sudo rm -r eccount-server/src/main/webapp/gwt-unitCache/


But, worked only when  
<set-property name="user.agent" value="safari"/>  is specified in eccount.gwt.xml.

References
GWT 2.5.0-rc1 and eclipse (3.7 and 4.2) problems, https://groups.google.com/d/msg/google-web-toolkit/bmXJvON1KOg/WhV4W9br2WEJ



No comments:

Post a Comment