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

JSF Java Discussion :

Insertion d'image et java.lang.NoSuchMethodError


Sujet :

JSF Java

  1. #1
    mame06
    Invité(e)
    Par défaut Insertion d'image et java.lang.NoSuchMethodError
    Salut tout le monde.
    voilà mon problème: j'ai développé et exécuté une application jee avec richfaces POI et tomcat le tout sur netbeans. mais dés que j'installe tomcat(sans netbeans: pour simuler un serveur d'applications en dehors de l'EDI ) et que j'exécute j'ai ce message d'erreur:
    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
    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
    type Rapport d'exception
     
    message #{GenererFichierMB.generationFichier}: java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getServletContext()Ljavax/servlet/ServletContext;
     
    description Le serveur a rencontré une erreur interne qui l'a empêché de satisfaire la requête.
     
    exception
     
    javax.servlet.ServletException: #{GenererFichierMB.generationFichier}: java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getServletContext()Ljavax/servlet/ServletContext;
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
     
    cause mère
     
    javax.faces.FacesException: #{GenererFichierMB.generationFichier}: java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getServletContext()Ljavax/servlet/ServletContext;
    	com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:107)
    	javax.faces.component.UICommand.broadcast(UICommand.java:383)
    	org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
    	org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
    	org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
    	org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
    	com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
    	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
    	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
     
    cause mère
     
    javax.faces.el.EvaluationException: java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getServletContext()Ljavax/servlet/ServletContext;
    	javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:91)
    	com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
    	javax.faces.component.UICommand.broadcast(UICommand.java:383)
    	org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
    	org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
    	org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
    	org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
    	com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
    	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
    	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
     
    cause mère
     
    java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getServletContext()Ljavax/servlet/ServletContext;
    	com.SuiviMonetic.Controle.Squelette.genererSquelette(Squelette.java:179)
    	com.SuiviMonetic.Controle.GenererFichier.generationFichier(GenererFichier.java:43)
    	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	java.lang.reflect.Method.invoke(Unknown Source)
    	org.apache.el.parser.AstValue.invoke(AstValue.java:191)
    	org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
    	org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
    	javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
    	com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
    	javax.faces.component.UICommand.broadcast(UICommand.java:383)
    	org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
    	org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
    	org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
    	org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
    	com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
    	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
    	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
    et la ligne Squelette.java:179 en question qui pose le problème est la première ligne du bout de code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     InputStream is = new FileInputStream(request.getServletContext().getRealPath("/Images/logo_2.PNG"));
            byte[] bytes = IOUtils.toByteArray(is);
            int pictureIdx = workbookOut.addPicture(bytes, workbookOut.PICTURE_TYPE_PNG);
            is.close();
            ClientAnchor anchor = workbookOut.getCreationHelper().createClientAnchor();
            anchor.setCol1(0);
            anchor.setRow1(0);
            Picture pict = sheetOut.createDrawingPatriarch().createPicture(anchor, pictureIdx);
            pict.resize();
    Merci d'avance à tous

  2. #2
    mame06
    Invité(e)
    Par défaut
    Personne n'a une idée. Peut être que j'ai pas posté dans le bon forum????????????

  3. #3
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    l'instance "request" est de quel type ? comment l'as-tu récupéré ?
    Tu peux montrer le début de cette méthode.

    Autre astuce pour ouvrir un InputStream sur une ressource de ton application :
    InputStream input = servletContext.getResourceAsStream("/images/...");

    Mais je ne pense pas que ton problème vienne de là.
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  4. #4
    mame06
    Invité(e)
    Par défaut
    Citation Envoyé par fxrobin Voir le message
    l'instance "request" est de quel type ? comment l'as-tu récupéré ?
    Tu peux montrer le début de cette méthode.

    Autre astuce pour ouvrir un InputStream sur une ressource de ton application :
    InputStream input = servletContext.getResourceAsStream("/images/...");

    Mais je ne pense pas que ton problème vienne de là.
    Merci bien fxrobin pour cette réponse voici le code complet pour l'instance request :
    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
      FacesContext context = FacesContext.getCurrentInstance();
            ExternalContext ec = context.getExternalContext();
            HttpServletRequest request = (HttpServletRequest) ec.getRequest();             
     
            //add picture data to this workbook.
     
            InputStream is = new FileInputStream(request.getServletContext().getRealPath("/Images/logo_2.PNG"));
            byte[] bytes = IOUtils.toByteArray(is);
            int pictureIdx = workbookOut.addPicture(bytes, workbookOut.PICTURE_TYPE_PNG);
            is.close();
            ClientAnchor anchor = workbookOut.getCreationHelper().createClientAnchor();
            anchor.setCol1(0);
            anchor.setRow1(0);
            Picture pict = sheetOut.createDrawingPatriarch().createPicture(anchor, pictureIdx);
            pict.resize();
    en passant j'utilisais tomcat 7 avec netbeans mais dans le serveur qui va héberger l'application j'ai mis tomcat 6

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getServletContext()Ljavax/servlet/ServletContext;
    Cette méthode est apparue avec la spécification servlet 3.0, on dirait que tu utilise une vieille version des specs. Quelle version de tomcat utilise-tu? Quelle version de J2EE est référencée en tête de ton web.xml? Aurais-tu commis l'erreur de mettre servlet-api, J2ee-api ou une autre spec J2EE directement dans ton WEB-INF/lib ?

  6. #6
    mame06
    Invité(e)
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Cette méthode est apparue avec la spécification servlet 3.0, on dirait que tu utilise une vieille version des specs. Quelle version de tomcat utilise-tu? Quelle version de J2EE est référencée en tête de ton web.xml? Aurais-tu commis l'erreur de mettre servlet-api, J2ee-api ou une autre spec J2EE directement dans ton WEB-INF/lib ?
    J'utilise tomcat6.0.36 mais sur Netbeans j'utilise tomcat 7 et ça marche bien.
    voici mon fichier web.xml:
    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
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
     
          <!-- Plugging the "Blue Sky" skin into the project -->
        <context-param>
            <param-name>org.richfaces.SKIN</param-name>
            <param-value>blueSky</param-value>
        </context-param>
     
    <!-- Making the RichFaces skin spread to standard HTML controls -->
        <context-param>
            <param-name>org.richfaces.CONTROL_SKINNING</param-name>
            <param-value>enable</param-value>
        </context-param>
     
        <!-- Defining and mapping the RichFaces filter -->
        <filter> 
            <display-name>RichFaces Filter</display-name> 
            <filter-name>richfaces</filter-name> 
            <filter-class>org.ajax4jsf.Filter</filter-class> 
        </filter> 
     
        <filter-mapping> 
            <filter-name>richfaces</filter-name> 
            <servlet-name>Faces Servlet</servlet-name>
            <dispatcher>REQUEST</dispatcher>
            <dispatcher>FORWARD</dispatcher>
            <dispatcher>INCLUDE</dispatcher>
        </filter-mapping>   
       <!-- Faces Servlet -->
        <servlet>
            <servlet-name>Faces Servlet</servlet-name>
            <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>Faces Servlet</servlet-name>
            <url-pattern>*.jsf</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>
                30
            </session-timeout>
        </session-config>
        <welcome-file-list>
            <welcome-file>forwardToJSF.jsp</welcome-file>
        </welcome-file-list>
    </web-app>
    Pour ce qui est des librairies je l'ai mis dans le fichier joint.
    Images attachées Images attachées  

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    tomcat 6, c'est du servlet api 2.5, pas 3.0, cette méthode n'est pas disponible donc.

    => soit tu utilise tomcat 7,

    => soit tu met tomcat 6 dans eclipse et tu adapte ton code.


    http://wiki.apache.org/tomcat/TomcatVersions

  8. #8
    mame06
    Invité(e)
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    tomcat 6, c'est du servlet api 2.5, pas 3.0, cette méthode n'est pas disponible donc.

    => soit tu utilise tomcat 7,

    => soit tu met tomcat 6 dans eclipse et tu adapte ton code.


    http://wiki.apache.org/tomcat/TomcatVersions
    D'accord je vais essayer ça

  9. #9
    mame06
    Invité(e)
    Par défaut
    ça marche maintenant le problème était lié à la compatibilité entre les versions specifications servlet et tomcat. Merci bien à tous

Discussions similaires

  1. erreur de fou (java.lang.NoSuchMethodError : main)
    Par saih_tam dans le forum Langage
    Réponses: 5
    Dernier message: 27/04/2007, 21h36
  2. pblm java.lang.NoSuchMethodError: main
    Par maxinformatique dans le forum Langage
    Réponses: 2
    Dernier message: 14/04/2007, 15h06
  3. java.lang.NoSuchMethodError erreur java
    Par mistify dans le forum Langage
    Réponses: 7
    Dernier message: 24/10/2006, 16h06
  4. java.lang.NoSuchMethodError: main
    Par lunart dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 21/04/2006, 16h12
  5. [IMAGE JAI] java.lang.Error
    Par babyboy dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 18/05/2004, 14h29

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