IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GWT et Vaadin Java Discussion :

Did you forget to inherit module


Sujet :

GWT et Vaadin Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 25
    Points : 13
    Points
    13
    Par défaut Did you forget to inherit module
    Bonjour,

    J'ai un petit soucis avec un objet que je veux récupérer coté client.

    En gros, j'ai crée une classe qui regroupe plusieurs hashmap, et je veux l'envoyer en retour de service (via un AsyncCallback).

    Cependant, j'ai cette erreur :
    No source code is available for type com. ... .Donnees; did you forget to inherit a required module?

    Voici à quoi ressemble mon Objet Donnees :

    public class Donnees implements IsSerializable {
    private HashMap<String, PlateForme> MAP_PLATE_FORME;
    public Donnees() {
    MAP_PLATE_FORME = new HashMap<String, PlateForme>();
    }
    //get et set
    }

    Et voici mon appel coté client :
    appel.recuperationDonnee( new AsyncCallback<Donnees>() { ... });

    Quelqu'un aurait une piste, svp ?

    Merci

    PS: j'utilise la version 2.0.3 sur Eclipse.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Points : 59
    Points
    59
    Par défaut
    Bonjour,

    première chose, remplace le IsSerializable par java.io.Serializable, ça évite que tes objets de données soient liés à GWT.

    Et pour répondre à ton problème, il faudrait que l'on sache dans quels packages sont ta classe Donnees et ton fichier gwt.xml
    Et si tu peux donner le contenu de ton fichier gwt.xml aussi.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Je pense que tu dois ajouter une ligne à ton fichier tonProjet.gwt.xml du genre :
    <inherits name='com….'/> (le 'com….' doit être celui signalé dans ton erreur)
    à coté de ceux qui sont là par défaut pour il puisse comprendre d’où importer tes HashMap.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Points : 59
    Points
    59
    Par défaut
    Ici, c'est la classe Données que le compilateur GWT ne trouve pas.

    Ce qu'il manque, c'est une balise <source path="..." />

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    D'accord, merci beaucoup pour vos réponses.

    Pour répondre à glebreton, mon gwt.xml est le suivant :

    <?xml version="1.0" encoding="UTF-8"?>

    <module rename-to='myProject'>

    <inherits name='com.google.gwt.user.User'/>
    <inherits name='com.google.gwt.user.theme.standard.Standard'/>

    <inherits name="com.google.gwt.i18n.I18N"/>

    <inherits name='com.google.gwt.resources.Resources' />

    <entry-point class='com.novastats.client.myProject'/>

    <source path='client'/>
    <source path='i18n'/>

    </module>

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Points : 59
    Points
    59
    Par défaut
    Ta classe Donnees se trouve dans quel package ? Idem pour ton fichier gwt.xml

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Ma classe Donnees se trouve dans le package src/com/myProject/server/recuperationDonnees et mon gwt.xml dans src/com/myProject

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Points : 59
    Points
    59
    Par défaut
    Ok, donc le problème vient du fait que tu n'exposes pas les sources de ta classe au compilateur GWT, d'où l'erreur.

    Au choix, tu peux déplacer ta classe dans un sous-package de com.myProject.client ou ajouter un tag 'source' dans ton gwt.xml. Par exemple : <source path="com/myProject/server/recuperationDonnees" />

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    C'est bon, ça marche. Merci beaucoup !!

    Pour info, j'ai déplacé ma classe Donnees dans mon package Client.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Par contre, j'ai un probleme avec l'objet qui est stocké dans ma hashMap : HashMap<String, Module> MAP_MODULE;

    Module est un objet contenant des string, mais lorsque j'envois l'objet Donnees (contenant donc cette hashmap), j'ai l'erreur suivante :

    [WARN] Exception while dispatching incoming RPC call
    com.google.gwt.user.client.rpc.SerializationException: java.lang.reflect.InvocationTargetException
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:760)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:723)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:612)
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:129)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:152)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:534)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:700)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:730)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:612)
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:129)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:152)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:534)
    at com.google.gwt.user.server.rpc.RPC.encodeResponse(RPC.java:609)
    at com.google.gwt.user.server.rpc.RPC.encodeResponseForSuccess(RPC.java:467)
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:564)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:188)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:224)
    at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:324)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)

    Caused by: java.lang.reflect.InvocationTargetException
    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.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:742)
    ... 36 more

    Caused by: com.google.gwt.user.client.rpc.SerializationException: Type 'com.XX.client.objet.tableBDD.Module' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be serialized.: instance = com.XX.client.objet.tableBDD.Module@62a94b
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:610)
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:129)
    at com.google.gwt.user.client.rpc.core.java.util.Map_CustomFieldSerializerBase.serialize(Map_CustomFieldSerializerBase.java:50)
    at com.google.gwt.user.client.rpc.core.java.util.HashMap_CustomFieldSerializer.serialize(HashMap_CustomFieldSerializer.java:36)
    ... 41 more

    Tu as une idée stp ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Points : 59
    Points
    59
    Par défaut
    Il semblerait que ton objet Module soit bien dans un sous-package de com.myProject.client, donc pas de problème de ce côté là.

    Vérifies que ta classe implémente java.io.Serializable et qu'elle a bien un constructeur sans arguments.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Mon objet Module est bien dans un sous-package de com.myProject.client, mais n'a pas de constructeur sans arguments.
    je vais donc essayer cela.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Parfait, ça fonctionne.
    Merci beaucoup.

    Par contre, comment ça se fait qu'il faille un constructeur sans paramètre ?

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Points : 59
    Points
    59
    Par défaut
    C'est nécessaire quand une servlet GWT reçoit un appel client, pour reconstruire l'arbre d'objet.

    S'il n'y a pas de constructeur sans arguments pour une classe, la servlet sera incapable de savoir comment construire un objet pour cette classe. C'est du moins le cas pour GWT.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    D'accord, je te remercie pour cette précision et pour ton aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. invalid use of member (did you forget '&' ?)
    Par Go'Gaule dans le forum Débuter
    Réponses: 2
    Dernier message: 13/09/2011, 16h28
  2. RPC "did you forget to inherit a required module?"
    Par gwinyam dans le forum GWT et Vaadin
    Réponses: 21
    Dernier message: 31/05/2010, 12h21
  3. [SmartGWT] did you forget to inherit a required module?
    Par touille dans le forum GWT et Vaadin
    Réponses: 3
    Dernier message: 05/05/2010, 11h46
  4. problème avec GWT:did you forget to inherit a required module
    Par riadhhwajdii dans le forum GWT et Vaadin
    Réponses: 10
    Dernier message: 03/02/2010, 16h42
  5. [Free Pascal] [2.2.4] Message "link.res contains output sections; did you forget -T?"
    Par whatelse dans le forum Free Pascal
    Réponses: 4
    Dernier message: 16/11/2009, 21h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo