it-swarm.com.ru

Не удается найти дескриптор библиотеки тегов для "http://Java.Sun.com/jsp/jstl/core"

Я включил это в самый верх моей страницы JSP:

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

Я уже поместил JAR-файл JSTL в каталог WEB-INF/lib. Но все же JSP не может разрешить taglib. Я получаю ошибку ниже:

Не удается найти дескриптор библиотеки тегов для « http://Java.Sun.com/jsp/jstl/core »

Я использую Eclipse Juno, и структура проекта показана ниже:

enter image description here

39
user962206

Не удается найти дескриптор библиотеки тегов для « http://Java.Sun.com/jsp/jstl/core »

Исходя из одного из ваших предыдущих вопросов вы используете Tomcat 7. В таком случае вам нужен JSTL 1.2. Тем не менее, у вас есть файл jstl.jar, в то время как JSTL 1.2 включает номер версии, например, jstl-1.2.jar. Единственное имя файла jstl.jar типично для JSTL 1.0 и 1.1. Эта версия требует standard.jar вместе с /WEB-INF/lib, который содержит необходимые файлы TLD. Однако в вашем конкретном случае standard.jar явно отсутствует в /WEB-INF/lib, и именно поэтому URI taglib не может быть разрешен.

Чтобы решить эту проблему, вы должны удалить неправильный файл JAR, скачать jstl-1.2.jar и полностью удалить его в /WEB-INF/lib. Это все. Вам не нужно ни извлекать его, ни копаться в Build Path проекта.

Не забудьте удалить этот свободный c.tld файл. Это абсолютно не принадлежит там. Об этом действительно говорится в некоторых плохих учебниках или ответах в других местах в Интернете. Это миф, вызванный серьезным недоразумением и неправильной конфигурацией. Никогда не требуется иметь свободный файл JSTL TLD в пути к классам, также как и в предыдущих версиях JSTL.

Если вы используете Maven, используйте следующую координату:

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

Вы также должны убедиться, что ваш web.xml объявлен в соответствии с по крайней мере Servlet 2.4 и, следовательно, не как Servlet 2.3 или старше. В противном случае выражения EL внутри тегов JSTL, в свою очередь, не будут работать. Выберите самую высокую версию, соответствующую вашему целевому контейнеру, и убедитесь, что у вас нет <!DOCTYPE> нигде в вашем web.xml. Вот пример, совместимый с 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>

Смотрите также:

89
BalusC

URI зависит от версии JSTL, которую вы используете. Для версии 1.0 используйте:

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

а для 1.1 (и позже) вам нужно использовать:

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

У меня была такая же проблема, и несмотря на то, что JSTL

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

Я должен был также добавить «стандарт»:

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

Также, как уже упоминалось в предыдущем посте:

6
Nenad Bulatovic

Загрузка jstl-1.2.jar вместо jstl.jar решает проблему

1
shikha singh

Если вы используете maven, тег <dependencies> вашей помпы должен выглядеть так:

<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>

Меня устраивает.

1
Anakii Eugene

Просто скачайте javax.servlet.jsp.jstl.jar и добавьте к своему пути сборки и WEB-INF/lib, если вы просто разрабатываете динамическое веб-приложение.

Когда вы разрабатываете динамическое веб-приложение с использованием maven, добавьте javax.servlet.jsp.jstl зависимость в pom-файл.

Спасибо

nirmalrajsanjeev

0
Sanjeev Kumar

Чтобы это работало:

Добавьте jstl и standard jar файлы в вашу библиотеку.

Надеюсь, поможет.. :)

0
Sarat Chandra

Ну, я прочитал этот пост и, кажется, он недостаточно хорош, чтобы решить эту проблему. 

Приложение на базе Spring на Tomcat 8 не будет работать. 

Вот решение 

Шаг 1 ⇒ Добавьте следующую зависимость в ваш 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>

Шаг 2 ⇒ Добавьте все следующие два утверждения на своей странице JSP, убедитесь, что вы используете атрибут isELIgnored = "false" в теге <% @ 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"%>

Шаг 3 ⇒ Удалите все остальные настройки, которые вы сделали до сих пор в web.xml или где-либо еще :)

Шаг 4 ⇒ Очистите Tomcat и перезапустите Tomcat. 

Дополнительное примечание ⇒ На самом деле JSTL будет работать только с сервлет-спецификациями 3.x на Tomcat 8. 

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

вам также необходимо настроить это в web.xml. Пожалуйста, обратитесь к приведенному ниже коду.

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

Пожалуйста, дайте мне знать, если у вас все еще есть проблемы.

0
Gautam

добавьте зависимости 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

Убедитесь, что оба пути ниже присутствуют в пути сборки:

  1. стандарт-1.1.2.jar 
  2. jSTL-апи-1.2.jar

Maven Зависимости являются:

<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