title: GWT app crashes in run-time when RequestContext interface is used in client code
body: <p>I've been fighting with this issue for 3 days and I guess StackOverflow is my last resort. I ran out of ideas why it doesn't work :( I'm using GWT 2.4.0 and JDK 1.6.</p>
  
  <p>I was going through <strong><a href="http://code.google.com/webtoolkit/doc/latest/DevGuideRequestFactory.html" rel="nofollow">this tutorial</a></strong> and got stuck with crashing GWT app. The app crashes if I mention com.google.web.bindery.requestfactory.shared.RequestContext interface in my client code. I'm not even using it. I just have unused method that takes RequestContext as parameter. I tried referencing RequestFactory - same exception. So I suspect I'm missing something related to RequestFactory package. I added -logLevel DEBUG to GWT compiler and here is what I have:</p>
  
  <pre><code>DEBUG: Rebinding com.vsezavtra.courierApp.client.ManagerShell.ManagerShellUiBinder. 
    DEBUG: Checking rule &lt;generate-with class='com.google.web.bindery.requestfactory.gwt.rebind.RequestFactoryGenerator'/&gt;. 
      ERROR: Errors in 'jar:file:/C:/work/externals/gwt/gwt-user.jar!/com/google/web/bindery/requestfactory/shared/Receiver.java'. 
      ERROR: Unable to find type 'com.vsezavtra.courierApp.client.ManagerShell.ManagerShellUiBinder'. 
        ERROR: Line 26: The import javax.validation.ConstraintViolation cannot be resolved. 
        ERROR: Line 79: ConstraintViolation cannot be resolved to a type. 
        ERROR: Line 81: ConstraintViolation cannot be resolved to a type. 
        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 'com.vsezavtra.courierApp.client.ManagerShell.ManagerShellUiBinder'; expect subsequent failures. 
  ERROR: Unable to load module entry point class com.vsezavtra.courierApp.client.courierApp (see associated exception for details). java.lang.RuntimeException: Deferred binding failed for 'com.vsezavtra.courierApp.client.ManagerShell$ManagerShellUiBinder' (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.vsezavtra.courierApp.client.ManagerShell.&lt;clinit&gt;(ManagerShell.java:15)
      at com.vsezavtra.courierApp.client.courierApp.onModuleLoad(courierApp.java:10)
      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.vsezavtra.courierApp.client.ManagerShell.&lt;clinit&gt;(ManagerShell.java:15)
      at com.vsezavtra.courierApp.client.courierApp.onModuleLoad(courierApp.java:10)
      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)
  ERROR: Failed to load module 'courierApp' from user agent 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1' at localhost:10695. 
  </code></pre>
  
  <p>Full log is <strong><a href="http://pastebin.com/raw.php?i=46aiBLME" rel="nofollow">here</a></strong>. My application is very small. Here is my GWT XML file</p>
  
  <pre><code>&lt;!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.0//EN" "http://google-web-toolkit.googlecode.com/svn/releases/2.0/distro-source/core/src/gwt-module.dtd"&gt;
  &lt;module rename-to="courierApp"&gt;
      &lt;inherits name='com.google.gwt.user.User'/&gt;
      &lt;inherits name="com.google.web.bindery.requestfactory.RequestFactory"/&gt;
  
      &lt;source path="client"/&gt;
  
      &lt;entry-point class='com.vsezavtra.courierApp.client.courierApp'/&gt;
  &lt;/module&gt;
  </code></pre>
  
  <p>Main entry-point class:</p>
  
  <pre><code>package com.vsezavtra.courierApp.client;
  
  import com.google.gwt.core.client.EntryPoint;
  import com.google.gwt.user.client.ui.RootLayoutPanel;
  
  public class courierApp implements EntryPoint
  {
      public void onModuleLoad()
      {
          RootLayoutPanel.get().add(new ManagerShell());
      }
  }
  </code></pre>
  
  <p>Bindable UI class</p>
  
  <pre><code>package com.vsezavtra.courierApp.client;
  
  import com.google.gwt.core.client.GWT;
  import com.google.gwt.uibinder.client.UiBinder;
  import com.google.gwt.user.client.ui.Composite;
  import com.google.gwt.user.client.ui.Widget;
  import com.google.web.bindery.requestfactory.shared.RequestContext;
  
  public class ManagerShell extends Composite
  {
      interface ManagerShellUiBinder extends UiBinder&lt;Widget, ManagerShell&gt;
      {
      }
  
      private static ManagerShellUiBinder uiBinder = GWT.create(ManagerShellUiBinder.class);
  
      public ManagerShell()
      {
          initWidget(uiBinder.createAndBindUi(this));
      }
      // if I remove this method everything works :(
      public void SetTest(RequestContext test) {}
  }
  </code></pre>
  
  <p>and corresponding XML file</p>
  
  <pre><code>&lt;ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui'&gt;
      &lt;g:VerticalPanel&gt;
          &lt;g:HTMLPanel&gt;
              Test!
          &lt;/g:HTMLPanel&gt;
          &lt;g:HTMLPanel&gt;
              Test2!
          &lt;/g:HTMLPanel&gt;
      &lt;/g:VerticalPanel&gt;
  &lt;/ui:UiBinder&gt;
  </code></pre>
  
  <p>and finally my web.xml file has only root "web-app" element because I have no server-side part (yet).</p>
  
  <p>I'm using IntelliJ IDEA 10.5.2 to debug the app.</p>
  
  <p>Please let me know if you have any additional question. I really don't know what else I can do :(</p>