小弟在本机上恢复一个JSP网站,环境是XP sp2+tomcat6.0+JDK1.5+mysql4.1但是环境已经搭好,经测试tomcat,mysql都已OK,但是部署这个网站时候出现下面的错误:
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: File "/WEB-INF/c.tld" not found我在网上找了一个下午,但是收获甚微,只是确定好像是JSTL的问题,可能因为版本冲突,但是不确定请问那位大哥能对小弟指教一下,不甚感激!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【lschenjin】截止到2008-07-12 20:46:14的历史汇总数据(不包括此帖):
    发帖的总数量:4                        发帖的总分数:80                       每贴平均分数:20                       
    回帖的总数量:14                       得分贴总数量:4                        回帖的得分率:28%                      
    结贴的总数量:1                        结贴的总分数:20                       
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:3                        未结的总分数:60                       
    结贴的百分比:25.00 %               结分的百分比:25.00 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主该结一些帖子了
      

  2.   

    请问是不是在打开一个JSP的时候出现这个错误?请把JSP贴出来。估计是这个JSP里面标记库定义有问题
      

  3.   

    这不是已经告诉你了吗在这个目录下c.tld没有找到,你看看在目录下有没有这个文件啊,如果没有就对了,你就需要建一个这样的标签库啊
      

  4.   

    谢谢楼上的哥们,下面是JSP的代码头部,出错在红色的地方<%@ page contentType="text/html;charset=UTF-8" %>
    <%@ page import="cc.iview.util.*" %>
    <%@ page import="cc.iview.service.*" %>
    <%@ page import="cc.iview.web.util.*" %>
    <%@ page import="cc.iview.bean.*" %>
    <%@ page import="java.util.*" %>
    <%@ taglib uri="/WEB-INF/c.tld" prefix="c"%>
    <%@ taglib uri="/WEB-INF/fmt.tld" prefix="fmt"%>
    <%@ taglib uri="/WEB-INF/fn.tld" prefix="fn"%>
    <%@ taglib uri="/WEB-INF/x.tld" prefix="x"%>
    <%@ taglib uri="/WEB-INF/iview.tld" prefix="iview"%>
    <%
    IBusinessService businessService = (IBusinessService) ContextUtil.getBean("businessService");
      List newse=businessService.getNews(5);
    request.setAttribute("newse", newse);
    List cases=businessService.getShowcases(5);
    request.setAttribute("cases",cases);
    List jobs = businessService.getShowJobs(10,"Y");
    request.setAttribute("jobs", jobs);
    List<Copartner> copartners= businessService.getCopartners();
    request.setAttribute("copartners", copartners);
    %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"  >
    <head>
    <c:import url="head.jsp"></c:import>
    <script language="javascript">
    function searchJobs(){
      

  5.   


    谢谢!可我的WEB-INF里面有的啊
      

  6.   

    这是我的web.xml<?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
    <param-name>forceEncoding</param-name>
    <param-value>true</param-value>
    </init-param>
    </filter>
    <filter>
    <filter-name>adminFilter</filter-name>
    <filter-class>cc.iview.web.filter.AdminFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>adminFilter</filter-name>
    <url-pattern>/admin/*</url-pattern>
    </filter-mapping>
    <listener>
    <listener-class>cc.iview.util.ContextUtil</listener-class>
    </listener> <servlet>
    <servlet-name>DisplayChart</servlet-name>
    <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
    </servlet>
    <servlet>
    <servlet-name>PostAttachment</servlet-name>
    <servlet-class>cc.iview.web.servlet.PostAttachment</servlet-class>
    </servlet>
    <servlet>
    <servlet-name>PostImage</servlet-name>
    <servlet-class>cc.iview.web.servlet.PostImage</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>PostAttachment</servlet-name>
    <url-pattern>/admin/postAttachment</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>PostImage</servlet-name>
    <url-pattern>/admin/postImage</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>DisplayChart</servlet-name>
    <url-pattern>/servlet/displayChart</url-pattern>
    </servlet-mapping></web-app>
      

  7.   

    <taglib>
    <taglib-uri>/WEB-INF/c.tld</taglib-uri><taglib-location>c.tld的位置</taglib-location></taglib>
      

  8.   

    你程序怎么部署的?应该是部署到Tomcat的程序没找到/WEB-INF/c.tld
      

  9.   

    你用的是绝对路径,所以不用再web.xml中定义的
      

  10.   

    我分别用了两种虚拟目录的方法,一种是在D:\Tools\Tomcat 6.0\webapps\ROOT下面建一个目录,现在报的是HTTP Status 503 - This application is not currently available Tomcat这个错.第二种就是非webapp建的虚拟目录,在E:\myapp下面,也在servel.xml加了<Context path="/myapp" docBase="E:\myapp" debug="0" reloadable="true"></Context>这时还是报org.apache.jasper.JasperException: File "/WEB-INF/c.tld" not found 这个错误极度迷茫中!
      

  11.   

    现在我是把这个站点的文件都放在webapps/ROOT下面,这时反而报下面的错HTTP Status 503 - This application is not currently available--------------------------------------------------------------------------------type Status reportmessage This application is not currently availabledescription The requested service (This application is not currently available) is not currently available.
    --------------------------------------------------------------------------------Apache Tomcat/6.0.16
      

  12.   

    第一种,你要把你网站放在Root根目录下尤其是要把你的WEB-INF覆盖原来的第二种,你把jsp中/WEB-INF/c.tld改为/myapp/WEB-INF/c.tld试试
      

  13.   

    谢谢海洋同学的建议我试了,第一种还是报的是HTTP Status 503 - This application is not currently available Tomcat        而且我也用WEB-INF覆盖了原来的,但是还是无奈,呵呵第二种方法稍好些,没有给出令人恶心的tomcat错误,而是IE自己的, 无法显示网页 
    您正在查找的页当前不可用。 网站可能遇到支持问题,或者您需要 调整您的浏览器设置。 --------------------------------------------------------------------------------请尝试以下操作: 
      

  14.   

    你Tomcat重启过吗?重启的时候有报错吗?
    另外你的网站在别的地方成功运行过吗?你最好看看Tomcat的错误日志,可能找得到问题
      

  15.   

    谢谢我重启tomcat时一直正常,没有报过错,这个网站是帮别人忙做的,本人是做.net的,对jsp不是很熟,而且这个网站production上的服务器,jdk什么的都不清楚所以我恢复的时候就特别小心,之前听说过jsp的版本问题比较搞,今天看来确实很搞我待会就去看看tomcat的log,谢谢你的建议,希望能够take actionthanks
      

  16.   

    从你的 web.xml 看你是用 Servlet 2.4。在Servlet 2.4下你不应该直接引用文件系统的路径来作为标记库的uri,而是需要使用定义在tld文件里面的uri请用文本编辑器打开你的 c.tld , 搜索 <uri>, 你应该可以找到这样一行:
    <uri>http://java.sun.com/jsp/jstl/core</uri>把你出错的那行 <%@ taglib uri="/WEB-INF/c.tld" prefix="c"%>  换成<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>试试,看看出错信息有没有变化。 
      

  17.   

    谢谢楼上的我还有一些不明白,这个网站在别人的环境下是可以运行的,我只是把代码拷过来,在本机上重新部署了一下,并没有改任何的代码,是不是跟我本机上的JDK、tomcat的版本有关系么?我想问题可能是出在这里,但是不能确定
      

  18.   

    <%@ taglib uri="/WEB-INF/c.tld" prefix="c"%> 
    JDK、tomcat的版本没关系
      

  19.   

    <%@ taglib uri="WEB-INF/c.tld" prefix="c"%> 这样试试可能是你的前面加了一个/
      

  20.   

    /WEB-INF/c.tld到目录里去找,没有c.tld
      

  21.   

    对于c标签,你最好用<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
      

  22.   

    <taglib>
    <taglib-uri>/tags/c</taglib-uri>
    <taglib-location>/WEB-INF/tlds/c.tld</taglib-location>
    </taglib>
    <%@ taglib uri="/tags/c" prefix="c"%>
      

  23.   

    首先lib里面必须要有2个包,standard.rar,jstl.rar。再看有没有标签库如c.tld等等。。
    在页面可以这样使用。
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
    我想应该没有问题。
      

  24.   

    我来做个最简单的解决方案吧!将c.tld文件copy到WEB-INF下就OK了。
      

  25.   

    我也出现楼主的问题了,下载了两个包:jstl.jar和standard.jar  放在了WEB-INF/lib文件夹中,web.xml的配置好像跟这个问题没有太大的关系,jsp文件中的配置是:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>  然后就不再报错了,可以试试。