使用maven导入JSTL依赖出现异常

本文介绍了在Maven项目中导入JSTL依赖时可能出现的异常情况及其解决方案。包括类转换异常、TagLibValidator加载失败以及NoClassDefFoundError。针对这些问题,提供了详细的依赖引入方式,包括老版本的javax包和新版本的jakarta包下的相关依赖,并给出了相应的Jar包导入建议,以确保项目正常运行。

maven导入JSTL依赖出现异常

(1)类转换异常 : 未能加载或实例化TagLibraryValidator类

org.apache.jasper.JasperException: 未能加载或实例化TagLibraryValidator类:[org.apache.taglibs.standard.tlv.JstlCoreTLV]

原因 : 1643899883762

没有导入依赖 standard jar 包导致的

完整的依赖是 (老版本 , javax包下的)

<!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl -->
    <dependency>
      <groupId>javax.servlet.jsp.jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/taglibs/standard -->
    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl-api -->
    <dependency>
      <groupId>javax.servlet.jsp.jstl</groupId>
      <artifactId>jstl-api</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.glassfish.web/jstl-impl -->
    <dependency>
      <groupId>org.glassfish.web</groupId>
      <artifactId>jstl-impl</artifactId>
      <version>1.2</version>
      <scope>runtime</scope>
    </dependency>

新版本 : (jakarta包下的)只用导入一个就可以了

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

(2)如果出现 <%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %> 爆红的概况

可能是因为没有导入standard包的相关依赖导致的

<dependency>
    <groupId>org.apache.taglibs</groupId>
    <artifactId>taglibs-standard-impl</artifactId>
    <version>1.2.5</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.apache.taglibs</groupId>
    <artifactId>taglibs-standard-spec</artifactId>
    <version>1.2.5</version>
</dependency>

(3)java.lang.NoClassDefFoundError: (类定义未找到异常)javax/servlet/jsp/tagext/TagLibraryValidator

出现错误主要就是jar没有导完全 ,

使用jstl所需要的jar共有 :

<!-- servlet.jsp-api -->
<dependency>    
    <groupId>jakarta.servlet.jsp</groupId>    
    <artifactId>jakarta.servlet.jsp-api</artifactId>    
    <version>3.0.0</version>
</dependency>
<!-- servlet-api -->
<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>5.0.0</version>
    <scope>provided</scope>
</dependency>
<!-- jstl-api -->
<dependency>
    <groupId>jakarta.servlet.jsp.jstl</groupId>
    <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
    <version>2.0.0</version>
</dependency>
<!-- jstl -->
<dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>jakarta.servlet.jsp.jstl</artifactId>
    <version>2.0.0</version>
</dependency>
<!--standard-impl-->
<dependency>
    <groupId>org.apache.taglibs</groupId>
    <artifactId>taglibs-standard-impl</artifactId>
    <version>1.2.5</version>
    <scope>runtime</scope>
</dependency>
<!--standard-spec-->
<dependency>
    <groupId>org.apache.taglibs</groupId>
    <artifactId>taglibs-standard-spec</artifactId>
    <version>1.2.5</version>
</dependency>

### 下载 `taglibs-standard-impl-3.0.1.jar` 文件的方法 在 Maven 仓库中,`taglibs-standard-impl-3.0.1.jar` 是 JSTLJavaServer Pages Standard Tag Library)的一个实现版本。可以通过以下方法下载该文件: #### 方法一:通过 Maven 依赖配置 如果项目使用 Maven 管理依赖,可以在项目的 `pom.xml` 文件中添加以下依赖配置[^3]: ```xml <dependency> <groupId>org.glassfish.web</groupId> <artifactId>taglibs-standard-impl</artifactId> <version>3.0.1</version> </dependency> ``` 保存后,Maven 会自动从中央仓库其他配置的镜像仓库下载 `taglibs-standard-impl-3.0.1.jar` 文件到本地 `.m2/repository` 目录。 #### 方法二:手动从 Maven 中央仓库下载 如果需要直接下载 `.jar` 文件,可以访问 Maven 中央仓库网站,并搜索 `taglibs-standard-impl-3.0.1`。以下是具体步骤: 1. 打开 [Maven Central Repository](https://search.maven.org/)。 2. 在搜索框中输入 `taglibs-standard-impl` 并选择版本 `3.0.1`。 3. 进入对应页面后,点击右侧的 **"Download Jar"** 链接即可下载 `taglibs-standard-impl-3.0.1.jar` 文件。 #### 方法三:通过 Gradle 配置 如果项目使用 Gradle 构建工具,可以在 `build.gradle` 文件中添加以下依赖项[^1]: ```gradle dependencies { implementation 'org.glassfish.web:taglibs-standard-impl:3.0.1' } ``` 运行 `gradle build` `gradle dependencies` 命令后,Gradle 会自动下载该 `.jar` 文件到本地缓存目录。 --- ### 注意事项 1. 如果项目需要同时使用 JSTL 的 API 和实现,则还需要添加 `taglibs-standard-spec` 依赖: ```xml <dependency> <groupId>org.glassfish.web</groupId> <artifactId>taglibs-standard-spec</artifactId> <version>3.0.1</version> </dependency> ``` 2. 确保 Maven Gradle 的仓库配置中包含中央仓库阿里云镜像仓库,以避免下载失败[^1]。 ---
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值