13 votes

Problème GWT/Eclipse/Jetty : Jasper ne peut pas résoudre les bibliothèques de balises

J'essaie de faire fonctionner le mode hébergé de GWT dans Eclipse, à la manière de ce guide pratique . Les servlets fonctionnent bien, ainsi que mon code GWT, mais tous mes JSPs échouent avec des erreurs telles que la suivante :

[WARN] /view/lniExecutiveSummary.htm
org.apache.jasper.JasperException: /WEB-INF/jsp/lni/lniExecutiveSummary.jsp(1,1) The absolute uri: http://java.sun.com/jsp/jstl/fmt cannot be resolved in either web.xml or the jar files deployed with this application
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
    [ trimmed ]

Cette webapp fonctionne bien lorsqu'elle est déployée sous Tomcat 5x ; je n'arrive pas à lui faire résoudre les taglibs lorsqu'elle est exécutée sous Eclipse. Je suis nouveau dans Eclipse, et je m'arrache les cheveux à l'idée de le faire fonctionner avec toutes les parties mobiles requises pour GWT+Maven.

Mise à jour : Je n'utilise plus Eclipse ; je suis passé (de nouveau !) à Intellij IDEA. Je ne peux donc pas évaluer honnêtement les réponses que vous avez postées. Dès qu'un vote aura lieu ou que quelqu'un d'autre aura réussi à utiliser l'une de ces méthodes, j'accepterai la réponse appropriée. Je vous remercie.

1voto

VonC Points 414372

Avez-vous essayé de marquer le " jsf-api.jar "comme "exporté" dans votre projet Java ?
(comme mentionné dans ce fil )

1.) Allez dans les propriétés du projet Java et cochez la case " jsf-api.jar "comme exporté. ( project>properties>java build path>order and exports )
2.) Allez dans les préférences globales avancées de tomcat et ajoutez votre projet à le chemin de classe de tomcat ( windows>preferences>tomcat>advanced>add projects to tomcat classpath )

Ensuite, essayez à nouveau d'exécuter votre application web sous Eclipse.

Voici un article décrivant la même procédure/configuration, non pas pour JSF mais pour Hudson (même problème cependant)

Vous pouvez clairement voir les deux étapes que j'ai mentionnées ci-dessus :


(source : <a href="http://wiki.hudson-ci.org/download/attachments/4161557/override.png" rel="nofollow noreferrer">hudson-ci.org </a>)


(source : <a href="http://wiki.hudson-ci.org/download/attachments/4161557/otherTips.png" rel="nofollow noreferrer">hudson-ci.org </a>)

1voto

Dave Paroulek Points 6033

Je ressens votre douleur. J'ai vécu la même chose en essayant de faire fonctionner ensemble gwt, maven et eclipse.

J'ai réussi à le faire fonctionner avec maven en utilisant le pom.xml suivant. De cette façon, vous pouvez utiliser mvn gwt:run pour fonctionner en mode hébergé, mais malheureusement, je n'ai jamais pu faire fonctionner le but mvn mvn gwt:eclipse pour que la génération d'une configuration d'exécution du lancement d'Eclipse fonctionne.

Voici les extraits pertinents de mon pom.xml. Notez que j'ai trouvé plus facile d'installer gwt dans un endroit séparé et de demander à maven de l'utiliser plutôt que de demander à mvn de télécharger gwt depuis le repo. Le niveau "system" dans les dépendances de mvn est ce qui rend cela possible.

  <properties>

      <!-- convenience to define GWT version in one place -->
      <gwt.version>1.7.1</gwt.version>
      <google.webtoolkit.home>${env.GWT_HOME}</google.webtoolkit.home>

      <!--  tell the compiler we can use 1.5 -->
      <maven.compiler.source>1.6</maven.compiler.source>
      <maven.compiler.target>1.6</maven.compiler.target>      

  </properties>

  <dependencies>

      <!--  GWT dependencies (from central repo) -->
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-servlet</artifactId>
      <version>${gwt.version}</version>
      <scope>system</scope>
      <systemPath>${env.GWT_HOME}/gwt-servlet.jar</systemPath>
    </dependency>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-user</artifactId>
      <version>${gwt.version}</version>
      <scope>system</scope>
      <systemPath>${env.GWT_HOME}/gwt-user.jar</systemPath>
    </dependency>

    ... other dependencies...
  </dependencies>

  <build>
    <outputDirectory>war/WEB-INF/classes</outputDirectory>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>gwt-maven-plugin</artifactId>
        <version>1.1</version>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>generateAsync</goal>
              <goal>test</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
            <runTarget>com.gwt.example/Application.html</runTarget>
            <extraJvmArgs>-Xmx512m</extraJvmArgs>
        </configuration>
      </plugin>
      <!--
          If you want to use the target/web.xml file mergewebxml produces,
          tell the war plugin to use it.
          Also, exclude what you want from the final artifact here.
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webXml>target/web.xml</webXml>
                    <warSourceExcludes>.gwt-tmp/**</warSourceExcludes>
                </configuration>
            </plugin>
            -->

      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>2.0.2</version>
          <configuration>
            <source>${maven.compiler.source}</source>
            <target>${maven.compiler.target}</target>
            <module>com.gwt.example</module>
          </configuration>
      </plugin>
    </plugins>

    ...rest of pom.xml...

Une autre technique que j'ai utilisée avec succès est l'utilisation de l'éclipse plugin google gwt . Il suffit d'utiliser l'assistant pour créer un nouveau projet gwt, de s'assurer que l'on peut l'exécuter à partir d'Eclipse, puis de le modifier avec son propre code.

1voto

BalusC Points 498232

Cette webapp fonctionne bien lorsqu'elle est déployée sous Tomcat 5x ; je n'arrive pas à lui faire résoudre les taglibs lorsqu'elle est exécutée sous Eclipse. Je suis nouveau dans Eclipse, et je m'arrache les cheveux à l'idée de le faire fonctionner avec toutes les parties mobiles requises pour GWT+Maven.

Vous avez apparemment le(s) fichier(s) JAR JSTL dans Tomcat/lib au lieu de WEB-INF/lib . Vous pouvez résoudre ce problème de trois façons au moins :

  1. Déplacer/copier le(s) fichier(s) JAR JSTL dans le dossier WEB-INF/lib .
  2. Déplacer/copier le(s) fichier(s) JAR JSTL dans le dossier Tomcat/lib de votre machine de développement.
  3. Associer le bon serveur Tomcat contenant le(s) fichier(s) JAR JSTL au projet web dans Eclipse. Si ce n'est pas encore fait, ajoutez le serveur Tomcat dans la section Servers vue. Ensuite, dans les propriétés du projet, allez à Chemin d'accès à la construction de Java > Bibliothèques > Ajouter une bibliothèque > Exécution du serveur > sélectionner le serveur en question.

1voto

Kamahire Points 1054

Ajouter les fichiers Jar dans le classpath du projet eclipse. si vous aviez déjà ce fichier tomcat lib. Cette option fonctionnera pour vous. La deuxième option est d'ajouter le jar dans le dossier Web-Inf lib si vous avez un projet web eclipse.

1voto

Peter Knego Points 57985

Retour à l'idée ? C'est bon pour vous !

J'ai participé à un projet dans lequel j'utilisais Idea et les autres développeurs Eclipse. D'habitude, cela fonctionne bien. Mais ce projet utilisait Maven. Idea n'a jamais eu de problèmes avec lui, mais Eclipse avait constamment des problèmes. Le support de Maven dans Eclipse n'est pas vraiment bon pour les grands projets. À éviter.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X