title: Can't run GWT ServiceAsync
body: <p>I am trying to create a asyncallback to return a list with all the customers from a GAE JDO database in app-engine. I have done a login class that works well but only returns a string. Now I am trying to get a List but I have the errors that come from:</p>
  
  <pre><code>18:05:39.219 [ERROR] [prototipov8]    subtype   
  com.google.gwt.resources.client.impl.ExternalTextResourcePrototype.ETRCallback is not default 
  instantiable (it must have a zero-argument constructor or no constructors at all) and has no 
  custom serializer. (reached via
  com.google.gwt.user.client.rpc.AsyncCallback&lt;java.util.List&lt;pt.sites.shared.model.Customer&gt;&gt;)
  </code></pre>
  
  <p>and </p>
  
  <pre><code>[ERROR] [prototipov8] - subtype com.google.gwt.user.client.rpc.AsyncCallback&lt;T&gt; 
  is not instantiable
  </code></pre>
  
  <p>Full error:</p>
  
  <pre><code>17:54:07.268 [ERROR] [prototipov8] Unable to load module entry point class pt.info2000.sites.client.old.Main (see associated exception for details)
   java.lang.RuntimeException: Deferred binding failed for 'pt.info2000.sites.client.old.TableService' (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 pt.info2000.sites.client.old.Main.&lt;clinit&gt;(Main.java:30)
  at java.lang.Class.forName0(Native Method)
  at java.lang.Class.forName(Unknown Source)
  at com.google.gwt.dev.shell.ModuleSpace.loadClassFromSourceName(ModuleSpace.java:654)
  at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:363)
  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(Unknown Source)
  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 pt.info2000.sites.client.old.Main.&lt;clinit&gt;(Main.java:30)
  at java.lang.Class.forName0(Native Method)
  at java.lang.Class.forName(Unknown Source)
  at com.google.gwt.dev.shell.ModuleSpace.loadClassFromSourceName(ModuleSpace.java:654)
  at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:363)
  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(Unknown Source)
  </code></pre>
  
  <p>The call</p>
  
  <pre><code>        public static final TableServiceAsync table = GWT.create(TableService.class);
  </code></pre>
  
  <p>TableService</p>
  
  <pre><code>@RemoteServiceRelativePath("getObjects")
   public interface TableService extends RemoteService {
  
  List&lt;Customer&gt; getObjects(AsyncCallback&lt;List&lt;Customer&gt;&gt; callback);
  
    }
  </code></pre>
  
  <p>TableServiceAsync</p>
  
  <pre><code>  public interface TableServiceAsync {
  
      void getObjects(AsyncCallback&lt;List&lt;Customer&gt;&gt; callback, 
               AsyncCallback&lt;List&lt;Customer&gt;&gt; asyncCallback);
  
    }
  </code></pre>
  
  <p>Costumer.class a JDO in gae</p>
  
  <pre><code> @PersistenceCapable
  </code></pre>
  
  <p>public class Customer extends User implements Serializable {</p>
  
  <pre><code>/**
   * 
   */
  private static final long serialVersionUID = 1L;
  
  @Persistent
  private Date birthDate;
  
  @Persistent
  private int nib;
  
  @Persistent
  public Set&lt;Key&gt; companies;
  
  @Persistent
  public Set&lt;Key&gt; sugestions;
  
  @Persistent
  public Set&lt;Key&gt; documents;
  
  /**
   * @param code
   * @param name
   * @param description
   * @param creationDate
   * @param modificationDate
   * @param creator
   * @param lastModifier
   * @param username
   * @param password
   * @param avatar
   * @param activo
   * @param cookie
   * @param loginIP
   * @param roles
   * @param contacts
   */
  public Customer(int code, String name, String description,
          Date creationDate, Date modificationDate, Key creator,
          Key lastModifier, String username, String password, Blob avatar,
          boolean activo, String cookie, String loginIP, Set&lt;Key&gt; roles,
          Set&lt;Key&gt; contacts) {
      super(code, name, description, creationDate, modificationDate, creator,
              lastModifier, username, password, avatar, activo, cookie, loginIP,
              roles, contacts);
  }
  
  public Customer() {
  
  }
  </code></pre>
  
  <p>I have already try to find a solution but I couldn't make it work, has anyone meet this error? Any suggestions or solutions? Thank you in advance for the time taken to read this. Any code that can help please ask.</p>
  
  <p>Edit1: I have a default constructor with no parameters and the class implements serializable, and I can serialize it. This code works in the Customer class; </p>
  
  <pre><code>Serializable c = new Customer(); 
  </code></pre>
  
  <p>Edit2: Added requested code and the full error. Tried to pass the list to hashset but the error still persists. Didn't find any other solution.</p>