Ответ 1
Удалите standard.jar
. По-видимому, это была старая версия JSTL 1.0, когда URI TLD были без пути /jsp
. С JSTL 1.2 как доступным здесь вам вообще не нужен standard.jar
. Просто jstl-1.2.jar
в /WEB-INF/lib
достаточно.
Я использую 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)
Кто-нибудь может подсказать, какую ошибку я делаю?
Удалите standard.jar
. По-видимому, это была старая версия JSTL 1.0, когда URI TLD были без пути /jsp
. С JSTL 1.2 как доступным здесь вам вообще не нужен standard.jar
. Просто jstl-1.2.jar
в /WEB-INF/lib
достаточно.
Я решил ту же проблему. Я только что добавил 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>
Убедитесь, что вы не пропустили все банки в
tomcat.util.scan.StandardJarScanFilter.jarsToSkip
в коте catalina.properties.
Я удалил область и затем использовал обновление maven для решения этой проблемы.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
**<!-- <scope>provided</scope> -->**
</dependency>
jstl lib отсутствует в папке tomcat lib. Поэтому мы должны включить его. Я не понимаю, почему нам сказали сохранить как сервлет-api, так и область jstl, как предусмотрено.
Ошибка, о которой идет речь, также может быть вызвана отключением JarScanner в tomcat/conf/context.xml
.
См. также Обновление с Tomcat 8.0.39 до 8.0.41 приводит к ошибкам "не удалось сканировать" .
<JarScanner scanManifest="false"/>
позволяет избежать обеих проблем.
Если вы используете eclipse и maven для обработки зависимостей, вам может потребоваться предпринять эти дополнительные шаги, чтобы убедиться, что eclipse правильно копирует зависимости Maven-зависимостей, не видимых в WEB-INF/lib (а именно, в Deployment Assembly для динамического веб-приложения)
если вы используете весеннюю проверку загрузки в application.propertiese
это свойство закомментировано или удалите его, если оно существует.
Это может быть из-за переходных зависимостей.
Попробуйте добавить/удалить область из библиотеки JSTL.
Это сработало для меня!
Если вы используете проект maven, вам просто нужно добавить jar файл jstl-1.2 в вашу зависимость. Если вы просто добавляете jar в свой проект, то возможно, что jar файл не будет добавлен в артефакт вашего проекта. Вам просто нужно добавить файл jar в файл WEB-INF/lib.
Вот как должен выглядеть ваш проект, когда jstl не добавлен в артефакт. Просто нажмите кнопку исправления, и intellij добавит файл jar по указанному выше пути. Запустите проект и грохните.