此问题在此处已有答案:
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>
型
但它仍然返回上面提到的错误。
1条答案
按热度按时间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声明的示例:
字符串
一旦升级了应用程序提供的JSTL实现或降级了容器,就应该能够运行JSP页面而不会遇到ClassCastException。