JSTL报错NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator

问题描述:

在使用JSP的jstl时,引入jstl使用 c:forEach 标签时出现了如下报错:

截图:
原因分析:

JavaEE被Oracle捐献给Apache了。目前最高版本是 JavaEE8。

  • Apache把JavaEE换名了,以后不叫JavaEE了,以后叫做 jakarta EE。
  • 以后没有JavaEE了。以后都叫做Jakarta EE。
  • JavaEE8版本升级之后叫做JakartaEE9
  • JavaEE8的时候对应的Servlet类名是:javax.servlet.Servlet
  • JakartaEE9的时候对应的Servlet类名是:jakarta.servlet.Servlet (包名都换了)
  • 如果你之前的项目还是在使用javax.servlet.Servlet,那么你的项目无法直接部署到Tomcat10及以上版本。你只能部署到Tomcat9及以下版本。在Tomcat9以及Tomcat9之前的版本中还是能够识别javax.servlet这个包。

查到挺多博主使用如下这两个jar包解决了问题

jakarta.servlet.jsp.jstl-api-2.0.0.jar
jakarta.servlet.jsp.jstl-2.0.0.jar

因为我的是maven项目,发现maven阿里云仓库没有这个jar包:jakarta.servlet.jsp.jstl-api-2.0.0.jar

又查了别的资料,使用了如下两个jar包,解决了问题。

解决方法:

        <dependency>
            <groupId>jakarta.servlet.jsp.jstl</groupId>
            <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
            <version>3.0.2</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.web</groupId>
            <artifactId>jakarta.servlet.jsp.jstl</artifactId>
            <version>3.0.1</version>
        </dependency>

参考文档:java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator 问题解决 - 愚生浅末 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值