2009-04-14 16:22:31,125 WARN [com.opensymphony.xwork2.ognl.OgnlValueStack] - Could not find property [org.apache.catalina.jsp_file]
2009-04-14 16:22:31,203 INFO [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/SSH2]] - Exception initializing TldLocationsCache: XML parsing error on file /WEB-INF/web.xml: (line 2, col 9): Document is invalid: no grammar found.
2009-04-14 16:22:31,203 ERROR [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/SSH2].[jsp]] - Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: File "/struts-tags" not found
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:105)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:430)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:154)
at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:180)
at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:354)
at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:381)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:795)
at org.apache.jasper.compiler.Parser.parse(Parser.java:122)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:199)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:153)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:227)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:369)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:473)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:190)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:461)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:97)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)下面是我的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>
classpath:/applicationContext-resources.xml
classpath:/applicationContext-dao.xml
classpath:/applicationContext-service.xml
<!-- classpath:/application-mails.xml -->
classpath:/application-sendMail.xml
classpath*:/applicationContext.xml
/WEB-INF/applicationContext*.xml
/WEB-INF/application-scheduler.xml
</param-value>
</context-param>
  <filter>
      <filter-name>cacheFilter</filter-name>
      <filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
  </filter>
  <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>struts-cleanup</filter-name>
      <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
  </filter>
  <filter>
      <filter-name>struts</filter-name>
      <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  </filter>  <filter-mapping>
      <filter-name>encodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
    
  <filter-mapping>
      <filter-name>struts-cleanup</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
    
  <filter-mapping>
      <filter-name>struts</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
<!--<jsp-config>
<taglib>
<taglib-uri>/WEB-INF/struts-tags.tld</taglib-uri> 
<taglib-location>/WEB-INF/struts-tags.tld</taglib-location> 
</taglib> 
</jsp-config>-->
  <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
   
  <session-config>
      <session-timeout>60</session-timeout>
  </session-config>  <welcome-file-list>
      <welcome-file>welcome/index.jsp</welcome-file>
  </welcome-file-list>
<servlet>
<servlet-name>jcaptcha</servlet-name>
<servlet-class>
com.tks.util.ImageCaptchaServlet
</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>jcaptcha</servlet-name>
<url-pattern>/jcaptcha</url-pattern>
</servlet-mapping>  <error-page>
      <error-code>500</error-code>
      <location>/error.jsp</location>
  </error-page>
  <error-page>
      <error-code>400</error-code>
      <location>/index.jsp</location>
  </error-page>
  <error-page>
      <error-code>403</error-code>
      <location>/403.jsp</location>
  </error-page>
  <error-page>
      <error-code>404</error-code>
      <location>/404.jsp</location>
  </error-page>
</web-app>

解决方案 »

  1.   

    org.apache.jasper.JasperException这事jsp页面的错误。关注一下两点:1,struts-tags标签有没有在页面中引入?引入的位置对不对?2,<!-- <jsp-config>
    <taglib>
    <taglib-uri>/WEB-INF/struts-tags.tld </taglib-uri>
    <taglib-location>/WEB-INF/struts-tags.tld </taglib-location>
    </taglib>
    </jsp-config>--> 你这个配置都注释掉了会不会影响struts-tags在页面的引用,还是其他的引用方式
      

  2.   


    servlet规范2.4不需要在web.xml中写taglib>
      <taglib-uri>/WEB-INF/struts-tags.tld </taglib-uri>
    <taglib-location>/WEB-INF/struts-tags.tld </taglib-location>
    </taglib> 
    在WEB-INF下你有这个tld吗
      

  3.   

      对于以上的回答:非常感谢,我说下我的几点:
       (1):struts2.0的标签库已经放在WEB-INF根目录下了。
       (2):在WEB-INF下面有struts-tag.tld。
       (3):注释掉的代码,干脆我直接都删掉了,运行还是有问题。
      
      

  4.   

    忘记说了一点:我直接运行我的struts2.0的项目是没有一点问题的,可是现在加上了Heritriex后,它的一些jar包和struts2.0一糅合后,就出现上面我提出的问题了。各自单独的运行一点问题都没有。看下各位还有什么高见没有。
      

  5.   


      好像 Filter 的使用频率比 Servlet 越来越高了,尽管前者说到底也属于后者.  我不确定 Struts 2 中有没有 Heritriex 的插件包.  应该是顺序弄错了
      <filter> 
          <filter-name>struts-cleanup </filter-name> 
          <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp </filter-class> 
      </filter> 
      放第一个  <filter> 
          <filter-name>struts </filter-name> 
          <filter-class>org.apache.struts2.dispatcher.FilterDispatcher </filter-class> 
      </filter>
      放最后一个  然后把所有 的其他都放在中间,当然啦,后面的<filter-mapping>的顺序也是如此.  不知道是否对 LZ 有帮助