Spring Boot Sping Boot 面临jstl(JSP)问题[重复]

vd2z7a6w  于 7个月前  发布在  Spring
关注(0)|答案(1)|浏览(98)

此问题在此处已有答案

How to install JSTL? It fails with "The absolute uri cannot be resolved" or java.lang.NoClassDefFoundError or java.lang.ClassCastException(22个回答)
7天前关闭
我正在使用Sping Boot 和jstl问题,当我调用jsp页面时,它返回验证错误

[2m[nio-9090-exec-1][0;39m [36mo.a.c.c.C.[.[localhost].[/].[jsp]       [0;39m [2m:[0;39m Servlet.service() for servlet [jsp] threw exception

java.lang.ClassCastException: class org.apache.taglibs.standard.tlv.JstlCoreTLV cannot be cast to class jakarta.servlet.jsp.tagext.TagLibraryValidator (org.apache.taglibs.standard.tlv.JstlCoreTLV and jakarta.servlet.jsp.tagext.TagLibraryValidator are in unnamed module of loader 'app')
    at org.apache.jasper.compiler.TagLibraryInfoImpl.createValidator(TagLibraryInfoImpl.java:356) ~[tomcat-embed-jasper-10.1.15.jar:10.1.15]
    at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:195) ~[tomcat-embed-jasper-10.1.15.jar:10.1.15]
    at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:429) ~[tomcat-embed-jasper-10.1.15.jar:10.1.15]
    at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:487) ~[tomcat-embed-jasper-10.1.15.jar:10.1.15]
    at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1444) ~[tomcat-embed-jasper-10.1.15.jar:10.1.15]
    at org.apache.jasper.compiler.Parser.parse(Parser.java:138) ~[tomcat-embed-jasper-10.1.15.jar:10.1.15]
    at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:245) ~[tomcat-embed-jasper-10.1.15.jar:10.1.15]
    at org.apache.jasper.compiler.ParserController.parse(ParserController.java:106) ~[tomcat-embed-jasper-10.1.15.jar:10.1.15]
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:211) ~[tomcat-embed-jasper-10.1.15.jar:10.1.15]
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:396) ~[tomcat-embed-jasper-10.1.15.jar:10.1.15]
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:372) ~[tomcat-embed-jasper-10.1.15.jar:10.1.15]
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:356) ~[tomcat-embed-jasper-10.1.15.jar:10.1.15]
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603) ~[tomcat-embed-jasper-10.1.15.jar:10.1.15]
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:396) ~[tomcat-embed-jasper-10.1.15.jar:10.1.15]
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380) ~[tomcat-embed-jasper-10.1.15.jar:10.1.15]
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328) ~[tomcat-embed-jasper-10.1.15.jar:10.1.15]

字符串
我已经安装了maven依赖如下所述。

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


但它仍然返回上面提到的错误。

thtygnil

thtygnil1#

错误消息表明应用程序提供的JSTL实现与容器提供的JSTL实现之间存在冲突。应用程序使用的是JSTL 1.2实现,而容器使用的是JakartJSP Taglib API(jakart.servlet.jsp.tagext)实现。
要解决此问题,可以将应用程序提供的JSTL实现升级到Jakarta JSP Taglib API,或者将容器降级为支持JSTL 1.2的容器。
从应用程序的pom.xml文件中删除JSTL 1.2依赖项。将Jakarta JSP Taglib API依赖项添加到应用程序的pom.xml文件中。更新JSP页中的JSTL taglib声明以使用Jakarta JSP Taglib API URI。以下是如何更新JSTL taglib声明的示例:

<%@ taglib prefix="c" uri="http://jakarta.servlet.jsp/jstl/core" %>

字符串
一旦升级了应用程序提供的JSTL实现或降级了容器,就应该能够运行JSP页面而不会遇到ClassCastException。

相关问题