2010-02-26 6 views
4

J'ai un projet GWT. Le code client se trouve dans le répertoire "client". Je souhaite attacher des classes Java externes (principalement des classes POJO DTO simples) qui se trouvent dans le répertoire externe. Comment configurer le fichier gwt.xml?GWT - Ajout de classes Java externes au projet client

Je reçois des erreurs de ce genre:

[ERREUR] Erreurs dans le « fichier:/C: /development/projects/CodeSpaces/LocateMe/LocateMeWeb/src/com/dominolog/locateme/client/LocateMeWeb.java ' [ERROR] Ligne 56: Aucun code source n'est disponible pour le type com.dominolog.locateme.model.dto.LocationInfo; avez-vous oublié d'hériter d'un module requis?

Répondre

5

Si vous avez les fichiers source java, il vous suffit d'ajouter le répertoire dans votre fichier .gwt.xml. Par exemple, si vous aviez un sous-répertoire appelé partagé, vous devez ajouter la ligne suivante:

<source path='shared'/> 

Le dossier partagé appelé devrait être un niveau sous votre paquet principal. Ainsi, si vous projetez le fichier .gwt.xml sur com.yourdomain.project, le dossier folder.package sera com.yourdomain.project.shared. Reportez-vous à Si vous n'avez pas la source et seulement les classes que vous devez importer un module comme Hilbrand a déclaré la source Chemin section à http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjects.html#DevGuideModules

.

+0

Ok. Mais que se passe-t-il si le code que je veux ajouter n'est pas sous "client", c'est-à-dire qu'il s'agit d'un répertoire externe dans mon espace de travail? – cubesoft

+0

Est-ce que c'est dans le même projet? Si oui, je suppose qu'il commence par le même paquet (com.yourdomain.project dans mon exemple) et ce que j'ai décrit fonctionnera. Il n'a pas besoin d'être sous client. Si ça vient d'une autre source/projet je ne sais pas comment/si vous pouvez l'ajouter au projet. – Carnell

+0

J'ai eu le même problème, dans netbeans j'avais besoin de supprimer "exclure de jar" les fichiers .java –

1

Toutes les classes Java devant être utilisées par GWT doivent avoir un fichier de module et être conformes à une structure de package qui inclut un sous-package. Voir cette réponse stackoverflow pour plus de détails: Adding Java packages to GWT. Dans ce cas, un fichier de module (par exemple model.gwt.xml) pourrait être créé dans le répertoire com.dominolog.locateme.model qui contient le contenu suivant:

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

Ajouter une référence à ce fichier module dans votre fichier de module principal et GWT alors toutes les classes le paquet com.dominolog.locateme.model.dto.

2 notes:

  1. GWT se penchera sur toutes les classes dans le répertoire (et les sous-répertoires)

  2. Les classes du package doivent être présents dans les fichiers source et ne peut contenir aucune référence à autres bibliothèques non analysables par GWT (Ceci peut être une limitation lorsque dans les classes dto des annotations sont utilisées qui se réfèrent à des utilisations de base de données spécifiques).

Mise à jour: Réécriture réponse à être plus précis.

+0

Merci, mais le message que vous faites référence à n'explique rien, mais que je dois ajouter tout mon code dans le répertoire client. Ce n'est pas acceptable pour moi. – cubesoft

+0

Je vais essayer d'être plus précis. Ma structure de l'espace de travail est: Workspace-> LocateMeModel LocateMeServer LocateMeMobile LocateMeWeb Le LocateMeWeb est une application GWT avec la mise en page de projet standard. Dans LocateMeModel, j'ai des classes Java qui définissent dto (objets de transfert de données) communs à LocateMeWeb, LocateMeMobile et LocateMeServer. Par conséquent, j'ai besoin que GWT prenne des fichiers de ce répertoire (LocateMeModel) et le compile comme un code client. Est-ce possible? De ce que je vois GWT permet seulement que le code DOIT être sous le répertoire client avec le projet GWT. – cubesoft

0

Je vais essayer d'être plus précis. Ma structure de l'espace de travail est: Espace de travail

  1. LocateMeModel
  2. LocateMeServer
  3. LocateMeMobile
  4. LocateMeWeb

Le LocateMeWeb est une application GWT avec la mise en page de projet standard.Dans LocateMeModel, j'ai des classes Java qui définissent dto (objets de transfert de données) communs à LocateMeWeb, LocateMeMobile et LocateMeServer. Par conséquent, j'ai besoin que GWT prenne des fichiers de ce répertoire (LocateMeModel) et le compile comme un code client. Est-ce possible? De ce que je vois GWT permet seulement que le code DOIT être sous le répertoire client avec le projet GWT.

3

Voici une autre solution qui fonctionne http://www.gordonizer.com/2012/01/referencing-third-party-library-source.html.

Je court (juste au cas où ce lien devient invalide également un jour):

  • Supposons que le package externe contenant les classes que vous souhaitez ajouter est com.foo.bar.bat.
  • Dans votre projet, vous créez le package com.foo.bar (sans le sous-package bat).
  • Dans votre nouveau package vous créez un nouveau fichier de module GWT Foo.gwt.xml avec un contenu comme

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

    (j'omises l'en-tête XML pour un souci de lisibilité)

  • Enfin ajoutez ce nouveau module à votre module GWT principal en utilisant l'étiquette inherit:

    <inherits name="com.foo.bar.Foo"/>

Questions connexes