Объявление Sun JSTL taglib завершается с ошибкой "Не удается найти дескриптор библиотеки тегов"

Я использую страницу JSP для печати массива значений. Я пытаюсь использовать JSTL <c:forEach> для этого.

<c:forEach items="${objects}" var="object">
    <td>${object.name} </td>
</c:forEach>

Проблема заключается в моем объявлении taglib JSTL:

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

В IDE отображается ошибка в этой строке

Невозможно найти дескриптор библиотеки тегов.

Многие форумы указывают на старый сайт Sun для загрузки библиотек JSTL. Теперь все эти ссылки указывают на домашнюю страницу Oracle без ссылки на двоичные файлы JSTL. Это заставляет меня думать, что для достижения этого есть более новый подход.

Ответ 1

Чтобы устранить эту проблему:

  • jstl jar должен находиться в вашем пути к классам. Если вы используете maven, добавьте зависимость в jstl в pom.xml с помощью фрагмента, предоставленного здесь. Если вы не используете maven, загрузите jstl jar из здесь и разверните его в свой WEB-INF/lib.

  • Убедитесь, что у вас есть следующая директива taglib в верхней части jsp:

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

Ответ 2

Просто просмотрите нашу собственную страницу JSTL wiki для правильных ссылок на скачивание и кристально чистых инструкций по установке.

Наведите указатель мыши над тегом [jstl], который вы ставите на вопрос самостоятельно, пока не появится черный ящик и не щелкните в нем ссылку на информацию.

enter image description here

Затем прокрутите бит до информации о версиях JSTL, пока не найдете ссылку для загрузки в JSTL 1.2 (или 1.2.1).

enter image description here

Наконец, просто отбросьте именно этот файл в webapp /WEB-INF/lib.

enter image description here

Таким образом, декларация taglib больше не должна давать никаких ошибок, и теги и функции JSTL должны работать.

Ответ 3

Я просто хочу поделиться своим опытом. У меня такая же проблема о jstl, использующая maven. Я разрешил это, добавив две зависимости.

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

Ответ 4

Вы можете загрузить Apache Standard Taglib и включить банку в свой проект.

Ответ 5

Это исправление для людей, которые не используют maven. Вам также нужно добавить standard.jar в свою папку lib для работы основной библиотеки тегов. Работает для версии jstl 1.1.

<%@taglib prefix="core" uri="http://java.sun.com/jsp/jstl/core"%>

Ответ 6

Если вы используете сервер Tomcat, я предлагаю вам поместить JSTL.jar файл в папку Tomcat lib. Поступая таким образом, вы будете иметь доступ к JSTL во всех ваших веб-проектах автоматически (с объявлением taglib в файлах .jsp, конечно).

Ответ 7

У меня возникла проблема с проектом maven с использованием среды eclipse. Я изменил "Заказ и экспорт" в пути построения проекта, сначала установив зависимости Maven, и ошибка исчезла. Я предполагаю, что из-за того, что среда Eclipse первоначально создавала источник моего приложения, прежде чем загружать библиотеки Maven.

Ответ 8

У меня возникала такая же проблема на enter image description here Spring Tool Suite 3.2 и вручную изменила версию jstl на 1.2 (из 1.1.2) при добавлении ее в список зависимостей, и ошибка исчезла.