web-dev-qa-db-fra.com

Impossible de trouver le descripteur de bibliothèque de balises pour “http://Java.Sun.com/jsp/jstl/core”

Je l'ai inclus tout en haut de ma page JSP:

<%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core" %>

J'ai déjà placé le fichier JST JSTL dans le répertoire WEB-INF/lib. Mais toujours, le JSP ne peut pas résoudre la taglib. Je reçois l'erreur ci-dessous:

Impossible de trouver le descripteur de bibliothèque de balises pour “ http://Java.Sun.com/jsp/jstl/core

J'utilise Eclipse Juno et la structure du projet est présentée ci-dessous:

enter image description here

39
user962206

Impossible de trouver le descripteur de bibliothèque de balises pour “ http://Java.Sun.com/jsp/jstl/core

Basé sur une de vos questions précédentes vous utilisez Tomcat 7. Dans ce cas, vous avez besoin de JSTL 1.2. Cependant, vous avez là un fichier jstl.jar alors que JSTL 1.2 a clairement le numéro de version inclus, de la sorte so jstl-1.2.jar. Le seul nom de fichier jstl.jar est typique de JSTL 1.0 et 1.1. Cette version nécessite un standard.jar dans /WEB-INF/lib qui contient les fichiers TLD nécessaires. Cependant, dans votre cas particulier, le standard.jar est clairement absent de /WEB-INF/lib et c'est exactement la raison pour laquelle l'URI de taglib n'a pas pu être résolu.

Pour résoudre ce problème, vous devez supprimer le mauvais fichier JAR, téléchargez jstl-1.2.jar et déposez-le dans son intégralité dans /WEB-INF/lib. C'est tout. Vous n'avez pas besoin de l'extraire ni de jouer dans le chemin Build Path du projet.

N'oubliez pas de supprimer également ce fichier c.tld desserré. Cela n’appartient absolument pas à cela. Ceci est en effet enseigné dans certains tutoriels médiocres ou des réponses ailleurs sur Internet. C'est un mythe causé par un malentendu majeur et une mauvaise configuration. Il n’est jamais nécessaire d’avoir un fichier TLD JSTL lâche dans le chemin de classe, pas plus que dans les versions précédentes de JSTL.

Si vous utilisez Maven, utilisez les coordonnées ci-dessous:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

Vous devez également vous assurer que votre web.xml est déclaré conforme au moins Servlet 2.4 et donc pas comme Servlet 2.3 ou plus ancien. Sinon, les expressions EL contenues dans les balises JSTL ne fonctionneraient pas. Choisissez la version la plus élevée correspondant à votre conteneur cible et assurez-vous de ne pas avoir de <!DOCTYPE> nulle part dans votre web.xml. Voici un exemple compatible avec Servlet 3.0 (Tomcat 7):

<?xml version="1.0" encoding="UTF-8"?>
<web-app
    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"
    version="3.0">

    <!-- Config here. -->

</web-app>

Voir également:

89
BalusC

L'URI dépend de la version de JSTL que vous utilisez. Pour la version 1.0, utilisez:

http://Java.Sun.com/jstl/core

et pour 1.1 (et les versions ultérieures), vous devez utiliser:

http://Java.Sun.com/jsp/jstl/core
8
nfechner

J'ai eu le même problème et malgré avoir jstl

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

Je devais également ajouter «standard»:

<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>

En outre, comme mentionné dans le post précédent:

6
Nenad Bulatovic

Télécharger jstl-1.2.jar au lieu de jstl.jar résout le problème

1
shikha singh

Si vous utilisez maven, la balise <dependencies> de votre pom devrait ressembler à ceci:

<dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp.jstl</groupId>
        <artifactId>javax.servlet.jsp.jstl-api</artifactId>
        <version>1.2.1</version>
    </dependency>
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
    </dependency>
</dependencies>

Ça marche pour moi.

1
Anakii Eugene

Téléchargez simplement javax.servlet.jsp.jstl.jar et ajoutez-le à votre chemin de construction et à WEB-INF/lib si vous développez simplement une application Web dynamique.

Lorsque vous développez une application Web dynamique à l'aide de maven, ajoutez ensuite javax.servlet.jsp.jstl dependency dans un fichier pom.

Merci

nirmalrajsanjeev

0
Sanjeev Kumar

Pour que cela fonctionne:

Ajoutez les fichiers jstl et standard jar à votre bibliothèque.

J'espère que ça aide.. :)

0
Sarat Chandra

Eh bien, j'ai lu ce post et semble ne pas être assez bon pour résoudre ce problème. 

L’application Spring sur Tomcat 8 ne fonctionnera pas. 

Voici la solution 

Étape 1 ⇒ Ajoutez la dépendance suivante dans votre pom.xml

<!-- JSTL Support -->

     <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

Étape 2 ⇒ Ajoutez les deux instructions suivantes dans votre page JSP, vérifiez que vous utilisez l'attribut isELIgnored = "false" dans la balise <% @ page%>

<%@ page language="Java" contentType="text/html; charset=ISO-8859-1" isELIgnored="false" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core"%>

Étape 3 ⇒ Supprimez toutes les autres configurations que vous avez effectuées jusqu’à présent dans web.xml ou ailleurs :)

Étape 4 ⇒ Nettoyez le Tomcat et redémarrez-le. 

Note latérale ⇒ En fait, JSTL fonctionnera uniquement avec les spécifications de servlet 3.x sur Tomcat 8. 

[http://www.kriblog.com/j2ee/jsp/jstl-with-spring-4-on-Tomcat-8.html]
0
user1788142

vous devez également configurer ceci dans web.xml.Veuillez vous reporter au code ci-dessous.

<taglib>
    <taglib-uri>http://Java.Sun.com/jsp/jstl/core</taglib-uri>
    <taglib-location>/WEB-INF/lib/c.tld</taglib-location>
</taglib>

S'il vous plaît laissez-moi savoir si vous rencontrez toujours un problème.

0
Gautam

ajoutez les dépendances maven:

<dependency>
  <groupId>jstl</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <groupId>taglibs</groupId>
  <artifactId>standard</artifactId>
  <version>1.1.2</version>
  <scope>compile</scope>
</dependency>
0
Dev M

Assurez-vous que les deux fichiers jars ci-dessous sont présents dans le chemin de génération:

  1. standard-1.1.2.jar 
  2. jstl-api-1.2.jar

Les dépendances Maven sont:

<dependency>
    <groupId>javax.servlet.jsp.jstl</groupId>
    <artifactId>jstl-api</artifactId>
    <version>$1.2</version>
</dependency>

<dependency>
   <groupId>taglibs</groupId>
   <artifactId>standard</artifactId>
   <version>1.1.2</version>
</dependency
0
Anshul Sood