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

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

<%@ 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)

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


person Nishit Jain    schedule 02.01.2012    source источник
comment
Это не повторяющийся вопрос - в вопросе, связанном как дубликат, URI неверен. В этом URI правильный, но плакат получает аналогичную ошибку.   -  person TimK    schedule 29.01.2016
comment
для меня, несмотря на то, что у меня есть devtools, настроенный на перезагрузку всего, мне пришлось выключить сервер и перезапустить, что исправило это для меня.   -  person JesseBoyd    schedule 04.08.2019


Ответы (10)


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

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

person BalusC    schedule 02.01.2012
comment
Спасибо .. Это очень помогло. - person Dil.; 04.06.2015
comment
@BalusC в IDEA папке lib нет, куда правильно добавить JSTL libs в Intellij IDEA - person Kasun Siyambalapitiya; 18.05.2017
comment
@BalusC В моем случае я использую jstl 1.1.1, и у меня такая же проблема. Увидев ваш ответ, я узнал, что стандартный jar нужен вместе с jstl 1.1.1. Когда я добавил стандартную банку в библиотеку, эта проблема была решена. Спасибо - person user2723039; 07.08.2018

Я решил ту же проблему. Я только что добавил 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>
person Yauhen    schedule 26.11.2012
comment
Если это единственное, что сработало, то рассматриваемый проект/pom, по-видимому, вообще не нацелен на Tomcat, а на настоящий сервер Java EE (GlassFish, WildFly и т. д.). У вас тогда на самом деле другие проблемы. - person BalusC; 04.10.2015

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

tomcat.util.scan.StandardJarScanFilter.jarsToSkip

в Tomcat catalina.properties.

person MGorgon    schedule 06.03.2018

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

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

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

person Nirmalya Kar    schedule 04.08.2017

Данная ошибка также может быть вызвана отключенным JarScanner в tomcat/conf/context.xml.

См. также Обновление с Tomcat 8.0.39 до 8.0.41 приводит к ошибкам "не удалось выполнить сканирование".

<JarScanner scanManifest="false"/> позволяет избежать обеих проблем.

person Vadzim    schedule 17.05.2017

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

person Colin D    schedule 18.03.2018
comment
Приведенная выше ссылка помогла мне решить мою проблему с зависимостью maven и использованием WEB-INF/lib в Eclipse. - person Park JongBum; 19.09.2018

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

server.tomcat.additional-tld-skip-patterns=*.jar

person Ahmad R. Nazemi    schedule 20.07.2019

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

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

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

person Gru    schedule 18.08.2019

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

введите здесь описание изображения

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

person Sayantan Dey    schedule 01.09.2019

Я столкнулся с той же проблемой, чтобы решить ее, я добавил следующую запись в pom.xml и выполнил maven update.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
person Yogesh Varal    schedule 01.05.2020