tomcat启动报错 http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar

1 篇文章 0 订阅

前不久接手了一个老古董项目, 本地启动的时候报错The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar。虽然tomcat启动成功了, 但是浏览器一访问页面就是这个错误提示,始终绕不过去。

在这里插入图片描述

这个是因为页面用了jstl标签库,如<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>之类,但它现在找不到所以会报错,提示了你web.xml或者jar的问题。
在这里插入图片描述

排查方法:

1.检查tomcat安装目录的lib文件夹下面是否有jstl.jar和standard.jar这两个包,没有就放上,重启tomcat。
2.将jstl.jar和standard.jar放到项目的WEB-INF的lib下面,然后构建路径,重启tomcat。

上面这两步是排查jar问题,如果还不行,说明jar里面应该没有tld文件。那接下来开始web.xml排查,咱手动指定c.tld的路径。

3.检查web.xml里面是否有如下taglib标签,没有的话就加上

<jsp-config>
     <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
        <taglib-location>/WEB-INF/c.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/functions</taglib-uri>
        <taglib-location>/WEB-INF/fn.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
        <taglib-location>/WEB-INF/fmt.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>http://www.springframework.org/tags/form</taglib-uri>
        <taglib-location>/WEB-INF/spring-form.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>/struts-tags</taglib-uri>
        <taglib-location>/WEB-INF/struts-tags.tld</taglib-location>
    </taglib>
     <!-- 以上比较常用的5个标签根据自己项目需要加,项目中用到的必须加上(如果还使用了别的标签库也需加上) -->
  </jsp-config>

并在项目的/WEB-INF/目录下放上c.tld这个文件(web.xml里配置了的tld都要放上,不然运行时在这个路径下找不到这些tld也是报错的),tld文件一般把那两个jar右键解压后能找到,么有的话去网上找个来。
在这里插入图片描述
经过这三步的检查,项目应该就可以访问看到正常的页面了。

另外多说一点别的东西,上面只说到了常用的5个标签库,其他的还有哪些呢。比如下面这个

sitemesh

在这里插入图片描述
需要的是sitemesh-2.2.1.jar,包中的META-INF\目录下有sitemesh-decorator.tld、sitemesh-page.tld,剩余的操作跟上面jstl一样。

<taglib>
	<taglib-uri>sitemesh-page</taglib-uri>
	<taglib-location>
		/WEB-INF/sitemesh-page.tld
	</taglib-location>
</taglib>
<taglib>
	<taglib-uri>sitemesh-decorator</taglib-uri>
	<taglib-location>
		/WEB-INF/sitemesh-decorator.tld
	</taglib-location>
</taglib>

sitemesh就是把请求结果处理后再返回给浏览器,基于Servlet的filter实现。所以web.xml里面也是要配置过滤器

<filter>
    <filter-name>sitemeshFilter</filter-name>
    <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>sitemeshFilter</filter-name>
    <url-pattern>/myaccount/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>sitemeshFilter</filter-name>
    <url-pattern>/admin/*</url-pattern>
  </filter-mapping>
   <!-- 其他需要拦截处理的路径,可以继续配... ,也可以直接配/* 处理所有-->

而且/WEB-INF/下面需要有个decorator.xml文件,decorator.xml内容以及含义如下

<?xml version="1.0" encoding="ISO-8859-1"?>
<decorators defaultdir="/你的jsp的存放路径">
    <decorator name="frame" page="frame.jsp">  <!--  name自定义名,page装饰文件 -->
        <pattern>/*</pattern> <!--  需要处理的路径:全部 (也可以指定详细的路径,可配置多个)-->
    </decorator>
</decorators>

shior

shior是一个权限框架,需要的包是shiro-all-1.3.2.jar,包里面有shiors.tld,web.xml可参考如下

<filter>
    <filter-name>shiroFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
      <param-name>targetFilterLifecycle</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>shiroFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

其他的标签库,也不详细说了,只列举一下,解决方法照葫芦画瓢。

  • oscache:oscache-2.3.jar。报错提示: The absolute uri: http://www.opensymphony.com/oscache cannot be resolved in either web.xml or the jar
  • displaytag:displaytag-1.1.1.jar。报错提示: http://displaytag.sf.net cannot be resolved in either web.xml or the jar files
  • struts-menu:struts-menu-2.4.3.jar。报错提示: http://struts-menu.sf.net/tag-el cannot be resolved in either web.xml or the jar files
  • acegi-security:acegi-security-1.0.5.jar.acegi-security-tiger-1.0.5.jar。报错提示: The absolute uri: http://acegisecurity.org/authz cannot be resolved in either web.xml or the jar files
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值