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

Struts 1 Java Discussion :

installation de Struts 1.3.10


Sujet :

Struts 1 Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut installation de Struts 1.3.10
    sur le site de Apache, j'ai téléchargé la dernière version de Struts 1.3 (1.3.10).
    j'ai téléchargé le Core de Tomcat 6
    J'ai essayé de faire fonctionner l'exemple struts-blank-1.3.10.war en le mettant sous $TOMCAT_HOME/webapps/ puis en démarrant TOMCAT $TOMCAT_HOME/bin/startup.bat
    quand le lance l'URL http://localhost:8080/struts-blank-1.3.10/ j'obtiens l'exception:
    java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagAttributeInfo.<init>(Ljava/lang/String;ZLjava/lang/String;ZZLjava/lang/String;ZZLjava/lang/String;Ljava/lang/StringV org.apache.jasper.compiler.TagLibraryInfoImpl.createAttribute(TagLibraryInfoImpl.java:584)
    J'avais obtenu exactement la même exception quand j'avais essayé de développer un projet Struts avec Eclipse Ganymède et Tomcat 5.5

    Quelle bibliothèque me manque t'il (normalement toutes les bibliothèques sont sous le WEB-INF/lib du war?)?

  2. #2
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Peux-tu montrer le code du web.xml contenu dans le war ?

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Peux-tu montrer le code du web.xml contenu dans le war ?
    Le Web.xml contient:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <!DOCTYPE web-app PUBLIC
    	"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    	"http://java.sun.com/dtd/web-app_2_3.dtd">
     
    <web-app>
      <display-name>Struts Blank Application</display-name>
     
      <!-- Standard Action Servlet Configuration -->
      <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
          <param-name>config</param-name>
          <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
     </servlet>
     
     
      <!-- Standard Action Servlet Mapping -->
      <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>
     
     
      <!-- The Usual Welcome File List -->
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
     
    </web-app>

    Autre élément, la build.xml de Ant:
    Il n'y a pas de servlet.jar dans le lib de Tomcat seulement un servlet-api.jar
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    <project name="blank" basedir="../" default="all">
     
     
        <!-- Local system paths -->
        <property name="servlet.jar" value="../../common/lib/servlet-api.jar"/>
        <property name="distpath.project" value="dist"/>
     
     
        <!-- Project settings -->
        <property name="project.title" value="Apache Struts Blank "/>
        <property name="project.distname" value="blank"/>
        <property name="project.version" value="1.3"/>
     
     
        <!-- Path settings -->
        <property name="doc.path" value="./doc/api"/>
        <property name="doc.src" value="./src/java"/>
     
     
        <!-- classpath for Struts 1.3 -->
        <path id="compile.classpath">
            <pathelement path ="lib/commons-beanutils.jar"/>
            <pathelement path ="lib/commons-digester.jar"/>
            <pathelement path ="lib/struts.jar"/>
            <pathelement path ="${servlet.jar}"/>
            <pathelement path ="classes"/>
            <pathelement path ="${classpath}"/>
        </path>
     
     
        <!-- Check timestamp on files -->
        <target name="prepare">
            <tstamp/>
        </target>
     
     
        <!-- Copy any resource or configuration files -->
        <target name="resources">
            <copy todir="classes" includeEmptyDirs="no">
                <fileset dir="src/java">
                <patternset>
                    <include name="**/*.conf"/>
                    <include name="**/*.properties"/>
                    <include name="**/*.xml"/>
                </patternset>
                </fileset>
            </copy>
        </target>
     
     
        <!-- Normal build of application -->
        <target name="compile" depends="prepare,resources">
            <javac srcdir="src/java" destdir="classes">
                <classpath refid="compile.classpath"/>
            </javac>
        </target>
     
     
        <!-- Remove classes directory for clean build -->
        <target name="clean"
          description="Prepare for clean build">
          <delete dir="classes"/>
          <mkdir  dir="classes"/>
        </target>
     
     
        <!-- Build Javadoc documentation -->
        <target name="javadoc"
         description="Generate JavaDoc API docs">
            <delete dir="./doc/api"/>
            <mkdir dir="./doc/api"/>
            <javadoc sourcepath="./src/java"
                destdir="./doc/api"
                classpath="${servlet.jar}"
                packagenames="*"
                author="false"
                private="true"
                version="true"
                windowtitle="${project.title} API Documentation"
                doctitle="&lt;h1&gt;${project.title} Documentation (Version ${project.version})&lt;/h1&gt;"
                bottom="Copyright © 2002-2005">
                <classpath refid="compile.classpath"/>
            </javadoc>
        </target>
     
     
        <!-- Build entire project -->
        <target name="project" depends="clean,prepare,compile,javadoc"/>
     
     
        <!-- Create binary distribution -->
        <target name="dist"
            description="Create binary distribution">
     
          <mkdir
            dir="${distpath.project}"/>
          <jar
            jarfile="${distpath.project}/${project.distname}.jar"
            basedir="./classes"/>
          <copy
            file="${distpath.project}/${project.distname}.jar"
            todir="${distpath.project}"/>
     
          <war
            basedir="../"
            warfile="../../${project.distname}.war"
            webxml="web.xml">
            <exclude name="**/${distpath.project}/**"/>
           </war>
          <move file="../../${project.distname}.war" tofile="${distpath.project}/${project.distname}.war" />
     
        </target>
     
     
        <!-- Build project and create distribution-->
        <target name="all" depends="project,dist"/>
     
    </project>

  4. #4
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Dans ta variable d'environnement CLASSPATH, tu ne pointerais pas par hasard sur les jars servlet-api.jar et jsp-api.jar d'une ancienne version de Tomcat ?

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Dans ta variable d'environnement CLASSPATH, tu ne pointerais pas par hasard sur les jars servlet-api.jar et jsp-api.jar d'une ancienne version de Tomcat ?
    Pour savoir avec quelle version de servlet-api cette application - livrée avec le paquet struts-1.3.10 - a été compilée je suis allé dans le pom.xml de Maven également livré dans le war; lea section dependencies donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <dependencies>
          <dependency>
             <groupId>${pom.groupId}</groupId>
             <artifactId>struts-taglib</artifactId>
             <version>${pom.version}</version>
          </dependency>
          <dependency>
             <groupId>${pom.groupId}</groupId>
             <artifactId>struts-tiles</artifactId>
             <version>${pom.version}</version>
          </dependency>
          <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>servlet-api</artifactId>
             <version>2.3</version>
             <scope>provided</scope>
          </dependency>
       </dependencies>
    Quand je lance Tomcat, je ne spécifie aucun Classpath et je suppose que le war va chercher le servlet-api.jar sous $TOMCAT_HOME/lib
    Par contre aucun des compilateurs (ant ou Maven) ne spécifie de jsp-api alors que la seule ressource de ce projet welcome.jsp utilie les taglibs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>

  6. #6
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Sur ton poste, il faut vérifier dans les propriétés système, et plus précisément dans les variables d'environnement, s'il y a une variable CLASSPATH définie, et si oui, voir ce qu'elle a comme valeur.
    Quand tu lances Tomcat via le startup.bat, il exécute catalina.bat et si tu regardes dedans, tu verras qu'il récupère ce qui est défini dans la variable CLASSPATH, qu'il y ajoute un ou plusieurs jars suivant ta config et qu'il lance java avec en paramètre cette variable CLASSPATH.

    En fait, d'après le message d'erreur, le constructeur de la classe TagAttributeInfo qu'il cherche à exécuter n'a pas les paramètres attendus, ce qui signifie donc que ce n'est pas la bonne version de cette classe qui est exécutée.
    Donc, ceci suppose que tu pointes quelque part sur une autre version du jar jsp-api.jar (dans lequel se trouve la classe TagAttributeInfo) que celui livré avec Tomcat 6.
    C'est pourquoi je t'ai demandé de regarder si la variable CLASSPATH est définie, et si par hasard dans sa valeur, il n'y a pas de référence au jar jsp-api.jar ou au répertoire lib d'une autre version de Tomcat (si toutefois tu as d'autres versions de Tomcat sur ton poste).

    Sinon, si tu regardes bien le contenu du war struts-blank-1.3.10.war et plus précisément le web.xml, tu verras que la première jsp appelée est index.jsp (car elle est spécifiée dans la balise welcome-file), et dans cette page, il y a un tag logic:redirect vers le forward welcome. Je suppose donc que c'est à l'exécution de ce tag que le constructeur de TagAttributeInfo est appelé.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Je me suis créé un petit script de démarrage jpstart.bat dont le but est d'intialiser le CLASSPATH puis d'appeler startup.bat (qui appelle catalina.bat), le voici (il se trouve comme startup.bat sous $TOMCAT_HOME/bin):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cd ..
    set TOMCAT_HOME=%cd%
    set CLASSPATH=%TOMCAT_HOME%\lib\servlet-api.jar;%TOMCAT_HOME%\lib\jsp-api.jar
    call %TOMCAT_HOME%\bin\startup.bat
    quand je teste l'url http://localhost:8080/struts-blank-1.3.10/ l'erreur a un peu changé:
    c'est soit:
    java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagAttributeInfo.<init>(Ljava/lang/String;ZLjava/lang/String;ZZLjava/lang/String;ZZLjava/lang/String;Ljava/lang/StringV org.apache.jasper.compiler.TagLibraryInfoImpl.createAttribute(TagLibraryInfoImpl.java:584)org.apache.jasper.compiler.TagLibraryInfoImpl.createTagInfo(TagLibraryInfoImpl.java:397)
    org.apache.jasper.compiler.TagLibraryInfoImpl.parseTLD(TagLibraryInfoImpl.java:250)
    soit:
    org.apache.jasper.JasperException: org.apache.jasper.JasperException: Impossible de charger la classe pour la JSP org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:156)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

  8. #8
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Je n'ai jamais dit qu'il fallait que ces deux jars soient dans le CLASSPATH.
    J'ai juste pensé qu'une explication au dysfonctionnement pourrait provenir du fait que ceux d'une autre version de Tomcat y soient référencés.

    As-tu regardé si la variable d'environnement CLASSPATH était définie ?
    Si oui, peux-tu poster son contenu ?
    Peux-tu aussi donner le contenu de la variable d'environnement PATH et JAVA_HOME ou JRE_HOME ?

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Je n'ai jamais dit qu'il fallait que ces deux jars soient dans le CLASSPATH.
    J'ai juste pensé qu'une explication au dysfonctionnement pourrait provenir du fait que ceux d'une autre version de Tomcat y soient référencés.

    As-tu regardé si la variable d'environnement CLASSPATH était définie ?
    Si oui, peux-tu poster son contenu ?
    Peux-tu aussi donner le contenu de la variable d'environnement PATH et JAVA_HOME ou JRE_HOME ?
    • echo %JRE_HOME% donne C:\Program Files\Java\jre6 (sous Program Files\Java c'est un peu le bazar j'ai jre6, jre1.6.0_04, jre1.6.0_07, jdk1.6.0_07
    • echo %JAVA_HOME% ne donne rien
    • echo %CLASSPATH% ne donne rien en revanche en enlevant le echo off à catalina.bat et ajoutant dans ce programme une ligne echo Using CLASSPATH: %CLASSPATH% (ligne 126 juste après la ligne echo Using CATALINA_TMPDIR: %CATALINA_TMPDIR%) on obtient dans la fenêtre Using CLASSPATH: ;C:\apache-tomcat-6.0.18\bin\bootstrap.jar (ceci en ayant démarré Tomcat par startup.bat)

  10. #10
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Ce n'est donc pas la variable CLASSPATH qui est en cause.
    Peux-tu montrer ce que contient la variable PATH ?

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Ce n'est donc pas la variable CLASSPATH qui est en cause.
    Peux-tu montrer ce que contient la variable PATH ?
    En effet je viens de faire les mêmes manipulations sur mon ordinateur au bureau à savoir:
    • téléchager le core de Tomcat 6 et le dézipper sous C
    • téléchager la version complète de Struts1.3.10 et mettre de apps le strut-balnk-1.3.10.war sous $TOMCAT_HOME/webapps
    • démarrer TOMCAT par $TOMCAT_HOME/bin/startup.bat

    Je n'ai rien fait d'autre et l'URL http://localhost:8080/struts-blank-1.3.10 fait bien le redirect (vers http://localhost:8080/struts-blank-1...63BD657D36706D) qui m'affiche bien la page correspondant au
    <h3><bean:message key="welcome.heading"/></h3>
    <p><bean:message key="welcome.message"/></p>

    de welcome.jsp
    La variable PATH sur ce poste donne:
    c:\ruby\bin;C:\Perl\bin\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;D:\apache-ant-1.6.5\bin;C:\Program Files\cvsnt;C:\Program Files\CVSNT\
    Je regarderai ce soir la variable PATH sur mon poste chez moi

    j'ai rajouté ligne 126 de Catalina.bat juste après echo Using CATALINA_TMPDIR: %CATALINA_TMPDIR% la ligne echo Using CLASSPATH: %CLASSPATH% ce qui donne quand je lance startup.bat:
    Using CLASSPATH: C:\Program Files\Java\jdk1.5.0_16\lib\tools.jar;C:\apache-tomcat-6.0.18\bin\bootstrap.jar alors que sur mon poste maison je n'avais que C:\apache-tomcat-6.0.18\bin\bootstrap.jar

    Raison de cette différence: catalina.bat appelle setclasspath.bat et à la ligne 70-71 on a:
    if not exist "%JAVA_HOME%\lib\tools.jar" goto noJavac
    set CLASSPATH=%JAVA_HOME%\lib\tools.jar
    :noJavac


    Le PC de bureau a une variabale d'environnement JAVA_HOME (qui pointe vers C:\Program Files\Java\jdk1.5.0_16) le PC à la masion n'a qu'une variable d'environnement JRE_HOME (qui pointe vers C:\Program Files\Java\jre6)

    A quoi sert tools.jar?

  12. #12
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Si tu regardes le début de setclasspath.bat, il est écrit :
    echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
    echo At least one of these environment variable is needed to run this program
    Donc, il faut qu'au moins une des deux variables soient définies mais pas obligatoirement les deux. JAVA_HOME doit pointer sur le jdk et JRE_HOME sur le jre.

    Sinon, je ne sais pas précisément à quoi sert le tools.jar. Il faudrait aller voir dedans.

Discussions similaires

  1. Installation de struts
    Par bim92i dans le forum Struts 1
    Réponses: 1
    Dernier message: 03/02/2009, 14h20
  2. installation de struts 2
    Par Trulane dans le forum Struts 2
    Réponses: 7
    Dernier message: 14/01/2008, 23h08
  3. Installation de struts
    Par gentil dans le forum Struts 2
    Réponses: 2
    Dernier message: 02/01/2008, 12h35
  4. [ Tomcat ]Install Tomcat Struts débutant
    Par pilou007 dans le forum Tomcat et TomEE
    Réponses: 17
    Dernier message: 28/04/2006, 16h54
  5. [STRUTS] [TOMCAT] Installation struts sur tomcat
    Par haderach dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 29/03/2006, 09h43

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