2009-01-13 11 views
10

J'ai essayé de rechercher, mais je n'ai pas pu définir de manière précise comment ajouter vos propres packages à un projet GWT.Ajout de packages Java à GWT

Ma structure d'arbre ressemble à ceci:

-com.mycompany 
    -public 
    MyApplication.html 
    MyApplication.gwt.xml 


-com.mycompany.client 
    MyApp.java 

-com.mycompany.gui 
    TableLayout.java 

La réponse que je l'ai vu, dit là-bas pour ajouter les packages par rapport au répertoire racine du fichier gwt.xml, comme ceci:

<module> 
    <inherits name="com.google.gwt.user.User" /> 
    <entry-point class="com.mycompany.client.MyApp" /> 
    <source path="client" /> 
    <source path="gui" /> 
</module> 

Il se plaint alors:

Unable to find type 'com.technicon.client.MyApp' 
    Hint: Previous compiler errors may have made this type unavailable 
    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 

quelqu'un peut-il me dire ce que je fais mal et comment résoudre ce problème?

Répondre

5

Vous pouvez vous débarrasser des deux lignes de chemin source, car par défaut, GWT récupère tout ce qui est relatif à la racine, et dans le paquet client comme vous l'avez fait. Vous devez également déplacer votre paquet dans votre package IUG client, donc il deviendrait:

-com.mycompany 
    -public 
    MyApplication.html 
    MyApplication.gwt.xml 


-com.mycompany.client 
    MyApp.java 

-com.mycompany.client.gui 
    TableLayout.java 


<module> 
    <inherits name="com.google.gwt.user.User" /> 
    <entry-point class="com.mycompany.client.MyApp" /> 
</module> 

En supposant que votre MyApp.java est une EntryPoint réelle, alors cela devrait fonctionner très bien.

Une autre chose à noter est que vous ne pouvez pas utiliser les classes java qui ne font pas partie de la bibliothèque d'émulation GWT JRE, et que votre projet ne compilera pas si vous le faites. Vous devriez obtenir des erreurs très spécifiques à ce sujet. Par exemple, vous ne pouvez pas utiliser de classes de bibliothèque comme java.math.BigDecimal, si elles ne sont pas émulées. Toutes vos propres classes que vous créez peuvent être utilisées.

9

même si, comme l'a souligné @rustyshelf, gwt convertira automatiquement tout ce qui est sous client.*, il y aura des moments où vous voudrez garder les choses en dehors de vos paquets clients (les réutiliser dans plusieurs projets pourrait en être une) et pour cela la solution réside toujours dans l'ajout d'autres paquets au processus en utilisant l'élément source. Maintenant, il ya un truc, vous devez décider si vous voulez déplacer le fichier de configuration gwt.xml ou si vous devez en créer un nouveau. Pour votre cas en particulier (où les deux packages partagent une racine dans le package, com.mycompany), vous pouvez simplement déplacer le fichier <project_name>.gwt.xml vers le package le plus courant et ajouter le nouveau package en tant que source <source path="client"/> là aussi) rendant ainsi votre fichier pour ressembler à:

<source path="client"/> 
<source path="gui"/> 

d'autre part, si les paquets ne partagent aucune racine, il suffit de créer un nouveau fichier *.gwt.xml avec seulement les éléments source et placez-le sur un package parent au sous-package que vous souhaitez ajouter, par exemple:

<module> 
    <source path=""/> 
</module> 

Notez que si vous avez besoin de donner compilation accès aux sous-packages imbriqués le font en les séparant par un / comme dans "admin/client"

espérons que cette aide vous sur la bonne voie et d'organiser votre code la meilleure façon possible.

Questions connexes