Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème JSTL, balise if provoque une erreur 500

Sujet résolu
    16 juin 2023 à 16:38:38

    Bonjour,

    Je suis actuellement le cours "Développez des sites web avec Java EE" Et je rencontre un problème lors de la partie sur les conditions.

    J'utilise tomcat 10.1.10.

    J'ai bien installé la jstl (version 3.0.1) dans /WEB-INF/lib et dans Build Path.

    Pour déclarer des variables ou afficher du texte je n'ai pas de soucis, par contre impossible d'utiliser <c:if> </c:if>

    Le code de ma JSP : 

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    	pageEncoding="UTF-8"%>
    <%@ taglib uri="jakarta.tags.core" prefix="c"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Test</title>
    </head>
    <body>
    
    	<c:if test="${ 50 > 10 }" var="variable">
        	C'est vrai !
    	</c:if>
    
    </body>
    </html>




    Voici le code d'erreur de tomcat :

    Type Rapport d'exception

    message java.lang.NoClassDefFoundError: jakarta/servlet/jsp/jstl/core/ConditionalTagSupport

    description Le serveur a rencontré une erreur interne qui l'a empêché de satisfaire la requête.

    exception

    jakarta.servlet.ServletException: java.lang.NoClassDefFoundError: jakarta/servlet/jsp/jstl/core/ConditionalTagSupport
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    	jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
    	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    	com.octest.servlets.Test.doGet(Test.java:27)
    	jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
    	jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
    	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    

    cause mère

    java.lang.NoClassDefFoundError: jakarta/servlet/jsp/jstl/core/ConditionalTagSupport
    	java.base/java.lang.ClassLoader.defineClass1(Native Method)
    	java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)
    	java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
    	org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2487)
    	org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:865)
    	org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1401)
    	org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1245)
    	org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1236)
    	org.apache.jasper.compiler.Parser.parseElements(Parser.java:1469)
    	org.apache.jasper.compiler.Parser.parse(Parser.java:138)
    	org.apache.jasper.compiler.ParserController.doParse(ParserController.java:245)
    	org.apache.jasper.compiler.ParserController.parse(ParserController.java:106)
    	org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:211)
    	org.apache.jasper.compiler.Compiler.compile(Compiler.java:396)
    	org.apache.jasper.compiler.Compiler.compile(Compiler.java:372)
    	org.apache.jasper.compiler.Compiler.compile(Compiler.java:356)
    	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:396)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
    	jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
    	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    	com.octest.servlets.Test.doGet(Test.java:27)
    	jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
    	jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
    	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    

    cause mère

    java.lang.ClassNotFoundException: jakarta.servlet.jsp.jstl.core.ConditionalTagSupport
    	org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1437)
    	org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1245)
    	java.base/java.lang.ClassLoader.defineClass1(Native Method)
    	java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)
    	java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
    	org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2487)
    	org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:865)
    	org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1401)
    	org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1245)
    	org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1236)
    	org.apache.jasper.compiler.Parser.parseElements(Parser.java:1469)
    	org.apache.jasper.compiler.Parser.parse(Parser.java:138)
    	org.apache.jasper.compiler.ParserController.doParse(ParserController.java:245)
    	org.apache.jasper.compiler.ParserController.parse(ParserController.java:106)
    	org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:211)
    	org.apache.jasper.compiler.Compiler.compile(Compiler.java:396)
    	org.apache.jasper.compiler.Compiler.compile(Compiler.java:372)
    	org.apache.jasper.compiler.Compiler.compile(Compiler.java:356)
    	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:396)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
    	jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
    	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    	com.octest.servlets.Test.doGet(Test.java:27)
    	jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
    	jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
    	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

    Je ne comprends pas que <c:out ... /> etc.. fonctionne et pas ma condition, donc si quelqu'un peut m'aiguiller !

    Edit : Une erreur bête de ma part, ça fonctionne, j'avais bien oublié d'installer un fichier, ce qui explique que la class n'était pas trouvé.

    -
    Edité par Gh0st.77 16 juin 2023 à 16:49:13

    • Partager sur Facebook
    • Partager sur Twitter
      15 avril 2024 à 16:16:12

      vu que ta question date d'il y a un an, je suppose que tu as désormais trouvé la réponse à ton problème. Je laisse tout de même une réponse pour tous ceux qui, comme moi, sont tombés sur ta question en espérant voir une réponse.

      Cette erreur est juste dû à une mauvaise installation des librairies jstl.
      J'ai un projet webapp avec maven comme gestionnaire de dépendance et j'ai corrigé mon pom.xml en rajoutant ces 2 dépendances.
      Au départ je n'en avais qu'une, la 3.0.1. Or il faut aussi la 3.0.0. Sur éclipse, il faut importer les 2 fichiers jar.
      <dependency>
      <groupId>org.glassfish.web</groupId>
      <artifactId>jakarta.servlet.jsp.jstl</artifactId>
      <version>3.0.1</version>
      </dependency>
      <dependency>
      <groupId>jakarta.servlet.jsp.jstl</groupId>
      <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
      <version>3.0.0</version>
      </dependency>
      • Partager sur Facebook
      • Partager sur Twitter

      Problème JSTL, balise if provoque une erreur 500

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      • Editeur
      • Markdown