关于web项目引入jstl.jar包和standard.jar包后存在的问题

项目场景:

自我研究jstl中


问题描述

导入jstl.jar包和standard.jar包,并且添加为库,在jsp文件中也写了引入代码

<%--引入标签库--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

运行后仍然出现的问题

无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]


原因分析:

首先导包和引入代码写的没有问题,在一番百度之后,得到的初步解决方案是,把standard.jar/META-INF下的c.tld/c-1_0.tld/c-1_0-rt.tld这三个文件放到WEN-INF目录下,确实这样操作之后不报错了,但是我又想,这把jar文件又拿出来,感觉像是脱裤子放屁,于是我继续在百度搜寻更好的解决方法


解决方案:

功夫不负有心人,我找到了问题所在,在Tomcat9.0/conf目录下的catalina.properties配置文件中有这样一行代码:

tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jsp

而这行代码原来的样子应该是:

tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\

我也不知道我是什么时候改掉的,总之把=后面改成\就解决问题了,把WEN-INF里的那三个.tld文件删掉之后也成功运行。 

写在最后就是,Tomcat10的话就不是那两个jar包了,得用另外的。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
今天做项目,用到了el表达式和jstl,在tomcat6.0上跑得好好的,没想到copy到tomcat5.5后,服务器起不来了,是tomcat版本的问题。查阅了不少资料,现在总结如下: 错误信息: java.lang.NoClassDefFoundError: javax/el/ExpressionFactory 分析:少包,上网查阅后发现解决方法 解决方法:将javaee.jar包再copy一份放在tomcat目录的common\lib下 如上完成后即解决了该异常,大以为大功告成,没想到又出现了新异常 错误信息:java.lang.NoSuchMethodError: javax.servlet.JSP.PageContext.getELContext()LJAVAx/el/ELContext 分析:这个问题网上找了半天没看到解决方法,只好自己想办法。想起先前看到的一个知识点:tomcat 6 实现了 servlet 2.5 和JSP2.1的规范相应的 tomcat 5 实现的是 2.4和2.0,想到tomcat5不支持JSTL1.2,于是替换JSTL1.1的包试试看后,问题解决 解决方法:移出工程lib目录中的JSTL1.2.jar,添加standard-1.1.jarJSTL1.1.jar 总结: jstl1.1版本由2个必要包构成:standard-1.1.jarJSTL1.1.jar;而jstl1.1版本只有一个必要包JSTL1.2.jar。(一开始在替换的过程中想当然的用JSTL1.1.jarJSTL1.2.jar,然后遗漏了standard-1.1.jar,耽搁了不少时间。) 经测试,tomcat6.0支持JSTL1.2版本,也支持JSTL1.1版本;tomcat5.5只支持JSTL1.1(JSTL1.1一下版本未测试) 不建议将2个版本的3个包同时放在工程中,可能会发生版本冲突。(另外,实际操作的时候发现JSTL1.2.jarJSTL1.1.jar这2个包放一起可以在tomcat5.5和tomcat6.0上跑,鉴于JSTL1.1.jar里面没有c.tld等文件,猜测JSTL1.1.jar里面只是放置了1.1的专用的类和信息)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值