4477 main ERROR org.springframework.web.struts.ContextLoaderPlugIn Context initialization failed 
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/action-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/action-servlet.xml] 
    java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/action-servlet.xml] 
     at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:99) 
     at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:167) 
     at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:148) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:129) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:145) 
     at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:126) 
     at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) 
     at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:89) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:262) 
     at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:139) 
     at org.springframework.web.struts.ContextLoaderPlugIn.createWebApplicationContext(ContextLoaderPlugIn.java:353) 
     at org.springframework.web.struts.ContextLoaderPlugIn.initWebApplicationContext(ContextLoaderPlugIn.java:296) 
     at org.springframework.web.struts.ContextLoaderPlugIn.init(ContextLoaderPlugIn.java:225) 
     at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:1158) 
     at org.apache.struts.action.ActionServlet.init(ActionServlet.java:473) 
     at javax.servlet.GenericServlet.init(GenericServlet.java:211) 
     at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1091) 
     at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:925) 
     at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3857) 
     at org.apache.catalina.core.StandardContext.start(StandardContext.java:4118) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524) 
     at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:894) 
     at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:857) 
     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:475) 
     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1102) 
     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1020) 
     at org.apache.catalina.core.StandardHost.start(StandardHost.java:718) 
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012) 
     at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442) 
     at org.apache.catalina.core.StandardService.start(StandardService.java:450) 
     at org.apache.catalina.core.StandardServer.start(StandardServer.java:683) 
     at org.apache.catalina.startup.Catalina.start(Catalina.java:537) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:585) 
     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271) 
     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)  
很奇怪啊,这个 action-servlet.xml 我根本没有配置过啊!struts-config文件如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"><struts-config>
  <data-sources />
  <form-beans >
    <form-bean name="adminForm" type="com.struts.form.AdminForm" />  </form-beans>  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action
      attribute="adminForm"
      input="/admin.jsp"
      name="adminForm"
      path="/add"
      scope="request"
      type="org.springframework.web.struts.DelegatingActionProxy">
      <forward
        name="addok"
        path="/list.do"
        redirect="true" />
      <forward
        name="fail"
        path="fail.jsp"
        redirect="true" />
    </action>
    <action
      path="/list"
      type="org.springframework.web.struts.DelegatingActionProxy"
      validate="false">
      <forward
        name="list"
        path="/list.jsp"
        contextRelative="true" />
    </action>  </action-mappings>

  <message-resources parameter="com.struts.ApplicationResources" />
  <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
    <set-property property="ContextConfigLocation" value="/WEB-INF/spring.xml" />
  </plug-in>
</struts-config>spring的xml文件如下<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans>
<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
</property>
<property name="url" value="jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs">
</property>
<property name="username" value="sa"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="datasource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">rg.hibernate.dialect.SQLServerDialect</prop>
<prop key="show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/po/Admin.hbm.xml</value>
</list>
</property>
</bean>
<bean id="AdminDAO" class="com.po.AdminDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="abuss" class="com.business.AdminBusiness">
<property name="adao">
<ref bean="AdminDAO" />
</property>
</bean>

<bean name="/add" class="com.struts.action.AddAction">
<property name="abuss">
<ref bean="abuss" />
</property>
</bean>

<bean name="/list" class="com.struts.action.ListAction">
<property name="abuss">
<ref bean="abuss"/>
</property>
</bean></beans>
好郁闷啊,找不出来原因啊

解决方案 »

  1.   

    [/WEB-INF/action-servlet.xml
    这个是什么文件?
      

  2.   

    说你的ContextLoaderPlugIn插件加载有错,肯定是配置有问题。
      

  3.   

    你仔细看看这篇文章可能对你有帮助,http://blog.csdn.net/flyfanc/archive/2008/03/22/2207275.aspx
      

  4.   

     <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring.xml</param-value>
     </context-param> 
      <servlet> 
      <servlet-name>context</servlet-name> 
      <servlet-class> org.springframework.web.context.ContextLoaderServlet </servlet-class> 
      <load-on-startup>1</load-on-startup>
     </servlet>放到web.xml中
      

  5.   

    根本原因可能是没有找到spring的配置文件,确认一下你的spring配置文件是在/WEB-INF下还是在/WEB-INF/classes目录下(创建时若没有改变地址它是默认放在此目录下的),还有在struts-config.xml文件中<message-resources />元素前应该加一个控制器 <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor" />,这样可以把action真正交给spring去代理,以后名字没有写错的话不会出现servlet action is not avaliable异常。还有在web.xml下最好加上:<context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
     </context-param>
     <servlet>
      <servlet-name>context</servlet-name>
      <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
     </servlet>
    这样应该就不会出现上面的异常了
      

  6.   

    原因找到了,我配置spring的xml文件的时候没有把mappingResources配置好
      

  7.   

    在项目里加上LOG4J,否则错误很难看的出
      

  8.   

    是不是 做项目时 必须在Spring的 配置文件对常用的包进行加载比如log4之类