`
hyz301
  • 浏览: 375363 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多

好久没有搞struts2,今天配置strut2.2.1,tomcat启动报错:

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" class="org.apache.struts2.spring.StrutsSpringObjectFactory" />  
      
    <!--  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" class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/>  
            <interceptor name="sessionAutowiring" class="org.apache.struts2.spring.interceptor.SessionContextAutowiringInterceptor"/>  
        </interceptors>  
    </package>      
</struts> 

 注意下面部分,表明该插件引入工程后,会自动设置Struts的ObjectFactory为StrutsSpringObjectFactory,从而让Spring的IOC容器来托管Struts的Action。所以导致了启动的问题

<bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory" />  
<!--  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 文件夹下即可。
分享到:
评论

相关推荐

    xwork-2.1.5-all.rar_xwork_xwork-2.1.5_xwork-2.1.5.jar_xwork-core

    XWork与Struts2紧密相关,Struts2是基于XWork构建的一个MVC框架,它在XWork的基础上增加了视图层的支持,提供了更全面的Web应用解决方案。 8. **应用场景**: XWork常用于企业级的Web应用开发,尤其适合那些需要...

    struts-2.1.6.chm

    com.opensymphony.xwork2 Main XWork interfaces and classes. com.opensymphony.xwork2.config Configuration core classes. com.opensymphony.xwork2.config.entities Configuration entity classes. ...

    struts2驱动包

    log4j:WARN No appenders could be found for logger (com.opensymphony.xwork2.config.providers.XmlConfigurationProvider). log4j:WARN Please initialize the log4j system properly. 2009-8-29 14:02:46 org....

    论坛系统(Struts 2+Hibernate+Spring实现)

    论坛系统(Struts 2+Hibernate+Spring实现)&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE validators SYSTEM "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd" PUBLIC "-//OpenSymphony Group...

    struts 2.3.4.1 最新英文版API

    struts 2.3.4.1 最新英文版API ...com.opensymphony.xwork2.spring.interceptor Spring specific interceptor classes. com.opensymphony.xwork2.test com.opensymphony.xwork2.util XWork util classes. ...

    Strtus2学习笔记

    - **Struts2简介**:Struts2是一个基于MVC模式的开源Web应用框架,它继承了Struts1的一些特性,并在此基础上进行了很多改进,使得开发更加便捷高效。 - **学习目的**:通过学习Struts2框架,掌握其基本原理和使用...

    struts2 spring hibernate整合要点、注意点

    &lt;constant name="struts.plugins" value="default,com.opensymphony.xwork2.plugin.spring.SpringPlugin"/&gt; &lt;!-- 配置包 --&gt; &lt;package name="default" namespace="/" extends="struts-default"&gt; ...

    struts-2.2.1.1 jar文件

    1. **Struts2核心库**:这包含主要的框架类和接口,如`com.opensymphony.xwork2`和`org.apache.struts2`包,它们定义了Action、Result、Interceptor等关键概念。 2. **依赖的开源库**:Struts2依赖于许多开源库,如...

    struts-2.5.20-all.rar

    1. **Action类**:在Struts2中,Action类是业务逻辑的主要载体,它实现了`com.opensymphony.xwork2.Action`接口或其子接口,如`com.opensymphony.xwork2.ActionSupport`。Action类处理用户的请求,并通过调用服务层...

    Struts2的配置

    Struts2能够很好地与Spring框架和Hibernate技术进行整合,从而实现更高效的应用开发。 根据题目提供的描述,“Struts2的配置”主要围绕如何搭建Struts2环境展开。因此,我们将详细介绍如何从零开始配置Struts2框架...

    SVN 源码 地址

    - `http://svn.opensymphony.com/svn/xwork/trunk/xwork` #### 八、Hibernate Hibernate提供了两个SVN地址供用户访问: - 匿名访问地址:`http://anonsvn.jboss.org/repos/hibernate` - 开发者访问地址:`...

    spring与struts2的整合-src.zip

    这里Action类应继承自Spring提供的`org.springframework.web.struts2.SpringAware`或`com.opensymphony.xwork2.spring.SpringObjectFactory`基类,以便Struts2能够感知Spring容器的存在。 - **配置Spring**:在...

    xwork-2.0.5-src

    《深入剖析Struts2核心组件:XWork框架2.0.5源码解析》 在Java Web开发领域,Struts2作为一款强大的MVC框架,因其灵活、易用的特性深受开发者喜爱。其中,XWork框架是Struts2的核心组成部分,负责处理动作执行和...

    struts-2.0.14源代码

    1. **Action类与ActionSupport**: Struts 2的核心是Action类,它是业务逻辑的载体。ActionSupport是所有自定义Action类的基础,包含了默认的错误处理和国际化支持。在源代码中,你可以看到ActionSupport类如何通过`...

    SSH与jfreechart整合

    - `struts2-spring-plugin-x.x.x.jar` - `spring-context-x.x.x.jar` - `spring-beans-x.x.x.jar` - `spring-core-x.x.x.jar` - `spring-aop-x.x.x.jar` - `hibernate-core-x.x.x.jar` - `slf4j-api-x.x.x.jar` - `...

    Struts课堂笔记.rar--struts2的struts.properties配置文件详解

    com.opensymphony.xwork2.ObjectFactory接口(spring) struts.objectFactory.spring.autoWire Whether Spring should autoWire or not 是否自动绑定Spring struts.objectFactory.spring.useClassCache ...

    struts2.0spring2.5hibernate3.0框架整合步骤

    import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { private String username; private String password; public String execute() { if (!"admin".equals...

    Struts2-Spring-Hibernate整合的例子:添加

    在"Struts2-Spring-Hibernate整合的例子:添加"这个项目中,开发者将这三个框架融合在一起,实现了数据的添加功能。下面我们将深入探讨这个整合过程中的关键知识点: 1. **Struts2整合**: - **Action类**:Struts...

Global site tag (gtag.js) - Google Analytics