首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

struts2启动报错com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:1

2013-10-21 
struts2启动报错com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1Class: com.opensymphon

struts2启动报错com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
Class: com.opensymphony.xwork2.spring.SpringObjectFactory File: SpringObjectFactory.java Method: getClassInstance Line: 220 - com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1 at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:428) at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295) at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3838) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4488) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:519) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:581) 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:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) Caused by: java.lang.NullPointerException at com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:220)

?原因:工程web.xml中没有配置加载spring ApplicationContext相关的listener

解决办法:在web.xml中加入:

<listener>      <listener-class>          org.springframework.web.context.ContextLoaderListener      </listener-class>  </listener> 

?原理:

查看struts2插件struts2-spring-plugin中的strtus-plugin.xml

<struts>      <bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" />            <!--  Make the Spring object factory the automatic default -->      <constant name="struts.objectFactory" value="spring" />          <constant name="struts.class.reloading.watchList" value="" />      <constant name="struts.class.reloading.acceptClasses" value="" />      <constant name="struts.class.reloading.reloadConfig" value="false" />        <package name="spring-default">          <interceptors>              <interceptor name="autowiring" name="code"><bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" />  <!--  Make the Spring object factory the automatic default -->  <constant name="struts.objectFactory" value="spring" />  

?错误2:IOException parsing XML document from ServletContext resource [/WEB-INF/class

解决办法1:在web.xml中加入如下代码

<context-param>    <param-name>contextConfigLocation </param-name>    <param-value>/WEB-INF/classes/applicationContext.xml </param-value></context-param>
问题主要由于加载spring的默认配置文件位置一般是在/WEB-INF/下找applicationContext.xml文件。而Myeclipse文件自动生成的applicationContext文件是放在/WEB-INF/classes/applicationContext.xml。所以在默认加载中是找不到applicationContext.xml文件的,必须加入上面配置。 解决方法2:将IDE自动生成的applicationContext.xml放到WEB-INF 文件夹下即可。

热点排行