Maven项目引入JSTL1.2报JasperException:无法解析jstl/core uri如何解决
解决方案
1. 修正pom.xml依赖配置
你原本的servlet、jsp-api依赖配置没有问题,保留即可,仅需要确认jstl依赖没有配置provided作用域即可,正确的完整依赖配置如下:
<!-- 原有servlet依赖 无需修改 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <!-- 原有jsp-api依赖 无需修改 --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.3</version> <scope>provided</scope> </dependency> <!-- 保留该jstl依赖即可,无需额外添加standard依赖,JSTL1.2已内置实现类和TLD文件 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
注意不要给jstl依赖加provided作用域,绝大多数应用服务器(如Tomcat)默认不自带JSTL实现,需要将JSTL包随项目一起打包部署。
2. 检查部署包是否包含JSTL依赖
90%以上该类报错都是因为IDE部署时没有将JSTL包打入项目的WEB-INF/lib目录,以IDEA为例修复步骤:
- 打开
File -> Project Structure -> Artifacts - 找到你当前部署的war/exploded包,展开查看
WEB-INF/lib目录 - 如果没有看到
jstl-1.2.jar,右键点击左侧「Available Elements」下的jstl依赖,选择「Put into WEB-INF/lib」 - 保存配置后重新部署项目即可
3. 额外排查点
- JSTL1.2无需在web.xml中额外配置taglib映射,jar包自带的TLD文件会被自动识别,你当前的web.xml配置不需要修改
- 执行
mvn clean install清理旧的编译缓存,重新构建项目 - 若仍报错可尝试清空IDE缓存后重启:IDEA选择
File -> Invalidate Caches...后重启IDE
内容的提问来源于stack exchange,提问作者TestSQA
相关产品推荐
相关产品推荐

