Подтвердить что ты не робот

Абсолютный uri: http://java.sun.com/jsp/jstl/core не может быть разрешен либо в файле web.xml, либо в файлах jar, развернутых с этим приложением

Я использую JDK 1.7, Apache Tomcat 7.0.23, и я поместил базовую библиотеку JSTL (1.2) и STANDARD jar в папку lib WEB_INF, это не дает мне никакого предупреждения, но когда я попытаюсь запустить код

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- Create Bean Instance-->
<jsp:useBean id="listdomain" class="bean.PopulateMultiDomain" scope="session"></jsp:useBean>

<jsp:setProperty property="*" name="listdomain"/>

<c:forEach var="item" items="${listdomain.status}">
    <option>
        <c:out value="${item}" />
    </option>
</c:forEach> 

это дает мне следующую ошибку:

org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:56)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:410)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:117)
    org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:311)
    org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:152)
    org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:410)
    org.apache.jasper.compiler.Parser.parseDirective(Parser.java:475)
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1425)
    org.apache.jasper.compiler.Parser.parse(Parser.java:138)
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242)
    org.apache.jasper.compiler.ParserController.parse(ParserController.java:102)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

Кто-нибудь может подсказать, какую ошибку я делаю?

4b9b3361

Ответ 1

Удалите standard.jar. По-видимому, это была старая версия JSTL 1.0, когда URI TLD были без пути /jsp. С JSTL 1.2 как доступным здесь вам вообще не нужен standard.jar. Просто jstl-1.2.jar в /WEB-INF/lib достаточно.

См. также:

Ответ 2

Я решил ту же проблему. Я только что добавил JSTL-1.2.jar в /apache-tomcat-x.x.x/lib и задал область действия в maven pom.xml:

 <dependency>
     <groupId>jstl</groupId>
     <artifactId>jstl</artifactId>
     <version>1.2</version>
     <scope>provided</scope>
 </dependency>

Ответ 3

Убедитесь, что вы не пропустили все банки в

tomcat.util.scan.StandardJarScanFilter.jarsToSkip

в коте catalina.properties.

Ответ 4

Я удалил область и затем использовал обновление maven для решения этой проблемы.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
    **<!-- <scope>provided</scope> -->**
</dependency>

jstl lib отсутствует в папке tomcat lib. Поэтому мы должны включить его. Я не понимаю, почему нам сказали сохранить как сервлет-api, так и область jstl, как предусмотрено.

Ответ 6

Если вы используете eclipse и maven для обработки зависимостей, вам может потребоваться предпринять эти дополнительные шаги, чтобы убедиться, что eclipse правильно копирует зависимости Maven-зависимостей, не видимых в WEB-INF/lib (а именно, в Deployment Assembly для динамического веб-приложения)

Ответ 7

если вы используете весеннюю проверку загрузки в application.propertiese это свойство закомментировано или удалите его, если оно существует.

server.tomcat.additional-TLD-пропуск узоров = *. банка

Ответ 8

Это может быть из-за переходных зависимостей.

Попробуйте добавить/удалить область из библиотеки JSTL.

Это сработало для меня!

Ответ 9

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

enter image description here

Вот как должен выглядеть ваш проект, когда jstl не добавлен в артефакт. Просто нажмите кнопку исправления, и intellij добавит файл jar по указанному выше пути. Запустите проект и грохните.