解决时间:2023/3/31,我使用的tomcat是8.5版本的,在整合SSM项目时在jsp中使用JSTL的核心标签库 - core,也就是使用c:forEach标签遍历出现了这个问题:无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri
不知道该怎么说明这个bug,因为我已经在网上试过很多方法了。
比如:
- jsp项目使用jstl(c标签)及jstl.jar和standard.jar
这个是手动添加standard.jar 和 jstl.jar - 解决Tomcat10配置JSTL的问题
这个是通过maven添加servlet依赖、jsp依赖、jstl依赖、standard依赖,同时需要在tomcat的lib文件夹中手动添加前面列出的部分jar包 - 使用maven导入JSTL依赖出现异常
这个也是去maven中添加一些jar包 - springMvc36-JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)
同上 - 无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri
手动将jar包添加到项目中的web-inf的lib文件夹中,同时将jar包放入到tomcat的lib文件夹中
基本上方法大同小异,都是引入一些jar包放到项目中或者tomcat中。结果使用这些方法我都失败了,同时我在网上找了一圈解答都没有发现原因,搞笑的是我之前搜索问题是:无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri,搜索出来的方法都没成功,这个是我页面上出现的报错。
然后我将问题换成tomcat 中的错误信息:Servlet[springmvc]的Servlet.service()引发了具有根本原因的异常无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core],然后我按照网上的方法成功解决了。
解决方法
修改tomcat/conf/catalina.properties中的一行
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jar
替换为
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\
重新启动tomcat后,项目就可以正常运行。就很神奇,别问原因,问就是我也不知道为什么!有知道的大佬麻烦说明一下,解答我的疑惑。
使用这篇文章的方法成功解决问题:
【问题解决】Servlet[springMVC]的Servlet.service()引发了具有根本原因的异常java.lang.ClassNotFoundException
我这篇文章仅供参考,我后面测试了一下使用c:forEach标签需要使用那些jar包,发现如果不添加jstl这个jar包也会出现无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri这个问题,至于其他的standard.jar,standard-impl等等jar包我都没有引入,Tomcat的lib中我也没有添加其他解决方案中的jar包,也可以使用c:forEach标签。
如果使用我的方法不成功,可以去看看我上面列出的一些解决方案试试。
在此贴出我的maven依赖,供需要的人参考:
<!--引入junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--引入spring相关-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId><