错误提示:
无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]
试过网上很多方案都没有用,比如导入jstl包、standard包,但都没有用。
错误显示无法在web.xml中解析,在导包无果的情况下,我在想是不是tomcat版本或者jdk版本的问题。经过查看tomcat的jar包以及jdk,得出以下解决办法和原因。
**
1.servlet和jsp对应版本不支持EL表达式或者没有开启EL表达式**
解决办法:EL表达式是从jsp2.0和servlet2.4才开始支持的。servlet2.3及以前版本都不支持。
在servlet2.3版本的页面中可以添加 <%@ page isELIgnored=“false” %> 来开启EL表达式并且能使用但会报黄线提示,而且servlet2.3中c标签和EL表达式不能结合使用,必须使用c标签的扩展库 <%@ taglib prefix=“c” uri=“http://java.sun.com/jstl/core_rt” %> 才可以和c标签结合使用
servlet2.4版本中默认已开启EL表达式,不用添加<%@ page isELIgnored=“false” %>。
servlet2.5及以上版本默认没有开启EL表达式,使用el表达式时需开启。
2.缺包。
解决办法:在lib或pom.xml导入jstl和standard包。
这个方法是网上最普遍的,应该搜一下就可以解决。
3.以上两种情况都不是的(我就是这种情况),原因可能是jstl.jar包冲突或者jar包缺陷。
请检查项目lib目录下的jstl.jar包和服务器lib目录下jar包是否冲突。
jar包缺陷的话(可能性更大),我的jdk版本是1.8,tomcat版本是8.5,在导入jstl1.2jar,出现报错。
然后引入jstl1.0jar包中的c.tld、c-1_0.tld、c-1_0-rt.tld文件在WEB-INF文件夹中。(我试过当jstl1.0版本的也成功过)
我的是用maven构建的项目,在导入这三个文件后,重新部署服务器就成功了!
其实jstl.jar包中也有着三个文件,但当我打开一探究竟时,发现几乎完全一样,只有协议不一样,所以我觉得jar包缺陷和jar包冲突可能性更大。
上图:
希望能帮到读者,因为这个错误也困扰了我好久。