Question Projet Eclipse 3.4 GWT 1.6 - comment référencer des sources d’autres projets?


J'ai un projet GWT 1.6 dans Eclipse 3.4 et j'essaie de faire référence à la source depuis un autre (non-GWT) projet dans mon espace de travail. J'ai ajouté le projet à mon chemin de compilation, mais je ne peux pas exécuter l'application en mode hébergé. Quand je le fais, j'obtiens une erreur "aucun code source n'est disponible".

J'ai fait quelques recherches et lectures et j'ai essayé quelques choses que d'autres ont suggérées (y compris la création d'un pot à partir du projet dépendant et son lien), mais franchement, rien n'a fonctionné.

Si vous le faites réellement, pourriez-vous m'aider avec une configuration pas à pas simple? Je l'apprécierais vraiment, merci!


19
2018-06-04 17:20


origine


Réponses:


J'ai 2 projets Eclipse. L'un est gwt project et l'autre non. Voici la structure de répertoire qui fonctionne pour moi:

workspace
-- gwt-project
   -- src/main/java
      -- com.gwt.GwtProjectModule
         -- GwtProjectModule.gwt.xml
-- non-gwt-project
   -- src/main/java
      -- com.nongwt.package.that.contains.source.you.need
         -- nongwt.gwt.xml
      -- com.nongwt.package.that.contains.source.you.need.client

nongwt.gwt.xml dit à gwt de regarder à l'intérieur du paquet "client", voici à quoi il ressemble:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.0/distro-source/core/src/gwt-module.dtd">
<module rename-to='nongwt'>
    <inherits name='com.google.gwt.user.User' />
    <source path="client" />
</module>

GwtProjectModule.gwt.xml peut alors hériter du code source de nongwt. Voici la ligne pertinente de l'intérieur de GwtProjectModule.gwt.xml:

<inherits name="com.nongwt.package.that.contains.source.you.need.nongwt" />

Assurez-vous d’inclure non-gwt-project dans le classpath de gwt-project dans eclipse. C'est la perceuse normale; Faites un clic droit sur gwt-project, choisissez properties, choisissez "Java Build Path", cliquez sur l'onglet "Projects" et "non-gwt-project"

Ou, au lieu d’inclure non-gwt-project dans le classpath de gwt-project en tant que référence de projet, vous pouvez également modifier le contenu de non-gwt-project, vous assurer que vous incluez la source dans le jar, puis inclure le jar dans Le classpath de gwt-project.

Bonne chance!


16
2017-11-04 15:16



Je sais que ce post est assez ancien mais comme j'ai passé pas mal de temps sur cette question et que j'ai finalement trouvé le moyen de le faire, j'ai pensé que je pourrais partager la réponse:

Une fois que vous avez créé votre configuration de lancement, ouvrez-la> exécutez les configurations ... Accédez à l'onglet classpath et sélectionnez les entrées utilisateur. ajouter un dossier avancé> et sélectionner le dossier source de votre autre projet de module. Si, comme moi, vous avez séparé le fichier de configuration de module dans un dossier src / main / resources, vous devez également l’ajouter.

devrait marcher.


3
2017-08-17 14:37



Le code côté client dans votre projet GWT (les classes sous le package client) ne peut pas référencer les classes qui ne sont pas dans un module GWT.

Si vous avez du code dans un autre projet que vous souhaitez référencer à partir du code client dans votre projet GWT, vous devez:

  • Assurez-vous que tout est "GWT safe", ce qui signifie qu’il ne fait référence à aucune classe JRE non émulée par GWT (http://code.google.com/webtoolkit/doc/1.6/RefJreEmulation.html), ou référence à toute classe faisant référence à des classes JRE non émulées
  • Assurez-vous que toutes les classes référencées sont dans un module GWT. Cela signifie qu'il faut placer un fichier MyOtherProject.gwt.xml dans votre autre projet et que toutes les classes référencées doivent être sous un sous-package client.
  • Faites en sorte que votre projet GWT hérite de l’autre projet. Ajoutez donc ce qui suit au fichier de module gwt.xml de votre projet GWT:

<inherits name = 'com.yourCompany.otherProject.MyOtherProject' />


1
2018-06-05 21:29



Boden: ajoutez ce qui suit à votre fichier de module

<source path=""></source>

en plus de vos autres sources, par exemple:

<source path=""></source>
<source path="com.acme.otherpackage"></source>

alors le compilateur ne se plaindra pas.

Au moins, c'est comme ça que je l'ai résolu. Pas sûr si using path = "" permet l'inclusion de tout, je suppose qu'il s'agit de la valeur par défaut quand aucune source n'est spécifiée.


1
2017-07-21 15:34



Ceci est une solution fantastique de votre problème proposé par Sven Buschbeck (un norvégien doit, lol!), A travaillé pour moi!

Lorsque vous travaillez sur plusieurs projets à grande échelle (dans Eclipse), il est pratique et bien sûr plus efficace de partager et de réutiliser le code via des bibliothèques communes. Bien que ceux-ci soient à un stade précoce, ils doivent être beaucoup modifiés et il est donc pratique de lier les projets au lieu de créer de nouveaux fichiers à chaque mise à jour de la bibliothèque. Malheureusement, cette approche standard du développement Java dans Eclipse ne fonctionne pas aussi facilement qu'avec les anciens projets Java, il faut trois étapes au total:

  1. Lier le projet de bibliothèque à tous les projets pertinents ("Projet Préférences "->" Java Build Path "->" Projects "->" Add ... ")
  2. Ensuite, ajoutez le code côté client de la bibliothèque (en l'ajoutant en tant que module.) Par conséquent, éditez le fichier gwt.xml de votre application et ajoutez par exemple où SuperLib est le nom de fichier du fichier gwt.xml dans votre bibliothèque projet et avant c'est le paquet dans lequel il se trouve.
  3. Ajoutez le code au projet en liant un dossier source. Malheureusement, cela est nécessaire si vous ne voulez pas écrire une fourmi script pour compiler votre application. (Si vous préférez Ant check ceci) Je n'aime pas l'idée d'utiliser un tel script car si vous oubliez de l'exécuter chaque fois que vous apportez des modifications, vous allez vous retrouver dans la confusion va pour la manière commode et automatique alors.

    • Ajoutez un dossier à votre projet d'application; Ouvrez la section "avancée" dans la boîte de dialogue de création de dossier, sélectionnez "Lien vers un autre emplacement" et sélectionnez le dossier source (généralement "src") de votre projet de bibliothèque. (Astuce: si vous travaillez en équipe avec un système de gestion des versions, vous pouvez créer une variable pour ce dossier et l'utiliser à la place. Ainsi, chacun de vos collègues peut placer le projet de bibliothèque dans un dossier différent et ajuster ce paramètre. variable :))

    • Faites un clic droit sur le dossier "Build Path" -> "Use as Source Folder". Terminé. Étonnamment, le plug-in GWT pour Eclipse n'honore pas la liaison de projet, par conséquent, toutes les références doivent être explicites ou vous allez vous retrouver avec beaucoup de choses: ClassNotFoundException.


1
2017-09-20 07:29



GWT ne connaît pas cet autre code car il ne se trouve pas dans le répertoire client de votre projet. Vous devez ajouter le chemin source de l'autre code dans le fichier .gwt.xml. Il suffit de l'ajouter au xml comme suit

<source path="common" />

commun est le répertoire où le code supplémentaire est pour cet exemple.

Vérifiez Référence de l'élément XML section de cette doc


0
2018-06-04 18:58



Dans votre projet gwt, accédez aux propriétés, au chemin de génération Java, à la source, cliquez sur "source de lien" et pointez sur votre paquet source de projet non-gwt à inclure.


0
2018-06-28 00:50



Edit: Vous avez trouvé un correctif pour une éclipse. Exécutez config> Classpath> Advanced> Ajouter un dossier> otherproject / src.

Raison: Eclipse ajoute les dossiers bin des projets exportés. GWT a besoin des dossiers src.

Elaborant sur mon commentaire.

J'utilise gwt 2.8 sur Eclipse Neon, Java 1.8.0_92. Faire référence à un autre projet dans eclipse ne parvient pas à lancer devmode, car il ne peut pas trouver la source des fichiers référencés de l'autre projet.

Ce qui a fonctionné:

Passé à 'ant devmode' complètement. Apportez les modifications suivantes à build.xml:

<target name="gwtc" ...>
    <java ...>
      <classpath>
        <pathelement location="src"/>
        <pathelement location="../otherproject/src"/><!-- Added -->
...
...
  <target name="devmode" ...>
    <java ...>
      <classpath>
        <pathelement location="src"/>
        <pathelement location="../otherproject/src"/><!-- Added -->

Maintenant, faites une production avec 'ant' ou lancez devmode avec 'ant devmode'.

Autres choses que j'ai remarquées

  1. En utilisant la méthode dans la réponse acceptée, otherproject / src / foo.gwt.xml est récupéré (se plaint s'il n'est pas disponible) et les valeurs statiques des classes sont récupérées. Rien d'autre n'est. Très étrange.

  2. Je comprends que les exécutables DevMode / gwtc récupèrent les sources de leur chemin de classe. Il suffit donc que eclipse ajoute des projets référencés à leur chemin de classe. Je n'ai pas pu y parvenir mais cela semble possible. FIXE voir en haut.


0
2017-08-26 00:20