我用的是eclipse3.4, tomcat6.0.刚开始学struts2.我login.jsp页面的action提交形式为<form action="login.action" method="post">
web.xml(在WEB-INF下):
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>struts.xml(在src的根目录下)如下:
<struts>
    <!-- 配置包,名称为bookcode  -->
    <package name="struts2" extends='struts-default'>
    <!-- 配置Action  -->
    <action name="login" class="LoginAction">
            <!-- 配置返回结果  -->
            <result name="success">/struts/success.jsp</result>
            <result name="error">/struts/failure.jsp</result>
        </action>
    </package>
</struts> LoginAction.java(也是在src根目录下)我按了login.jsp登录按钮后出现这样的错误:
console显示:
java.lang.InstantiationException: com.opensymphony.xwork2.Action
at java.lang.Class.newInstance0(Class.java:335)
at java.lang.Class.newInstance(Class.java:303)
at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:123)
at org.apache.struts2.plexus.PlexusObjectFactory.lookup(PlexusObjectFactory.java:298)
at org.apache.struts2.plexus.PlexusObjectFactory.buildBean(PlexusObjectFactory.java:216)
at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:154)
at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:143)
at com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:113)
        。
浏览器显示:
javax.servlet.ServletException: Unable to intantiate Action! - action - file:/D:/STUDY/Java/Development/eclipse/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/test1/WEB-INF/classes/struts.xml:11:46Unable to intantiate Action! - action - file:/D:/STUDY/Java/Development/eclipse/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/test1/WEB-INF/classes/struts.xml:11:46
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:277)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:365)java.lang.InstantiationException: com.opensymphony.xwork2.Action
java.lang.Class.newInstance0(Class.java:335)
java.lang.Class.newInstance(Class.java:303)望大家指教。。万分感谢哈

解决方案 »

  1.   

    LoginAction没有实例化
    如果用IOC注入生成对象的方式,可能配置文件没有配置
    其他,可能没有NEW一个对象
      

  2.   

    请2楼能否说的再详细点。
    我们目前就单用struts2,没有用到IOC的。
    不知是哪里出错了导致LoginAction不能够被实例。。
      

  3.   

    <struts> 
        <!-- 配置包,名称为bookcode  --> 
        <package name="struts2" extends='struts-default'> 
        <!-- 配置Action  --> 
        <action name="login" class="LoginAction"
                <!-- 配置返回结果  --> 
                <result name="success">/struts/success.jsp </result> 
                <result name="error">/struts/failure.jsp </result> 
            </action> 
        </package> 
    </struts> 红色部分写类的全名 包括包名
      

  4.   

    java.lang.InstantiationException实例化异常。当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常。
      

  5.   

    <action name="login" class="LoginAction"> 
    **.**.LoignAction是全路径的类名称
      

  6.   

    我这个LoginAction.java是在src根目录下的,所以没有包的
    我同样的结构和代码copy到myeclipse6.0,并用自己的lib包(没有用myelipse自带的包)就成功了。
    也许是环境的问题了,但不知道问题出在哪里。其他的跑ibatis和hibernate,struts1都是没问题的。
    真闹人,真是。
      

  7.   

    <form action="login.action" method="post"> 
     错误啊 ,应该带上命名空间
      

  8.   

    导入import com.opensymphony.xwork2.ActionSupport;
    你的 action 类继承ActionSupport了吗?
      

  9.   

    浅谈struts2
    要使工程中运用struts2
    工程目录下必须要有struts2必须的五个包,如下:
    struts2-core-2.0.12.jar,
    xwork-2.0.6.jar,
    commons-logging-1.0.4.jar,
    ognl-2.6.11.jar,
    freeer-2.3.8.jar
    struts2中的任何一个action都无需继承任何类(struts自带的Action类)
    但是作为struts2的action来说,默认执行的方法是execute()
    要让配置简单那必须要有这个方法,当然这个方法也不是必须的
    没有这个方法也可以作为正常的action使用但是需要指出所执行的方法,如:
    <action name="you want name" class="your class" method="your method">
    </action>
    而有execute()方法,且又是执行该方法就无须显示指明method的值,即:<action name="you want name" class="your class" method="execute"></action>

    <action name="you want name" class="your class">
    </action>
    等价
    对于表单中的值,如果在当前action中可取,那必须要在当前action中直接或者间接的拥有该属性
    且必须提供get、set方法
    想了解更多
    http://user.qzone.qq.com/492236022/blog/1225195641
      

  10.   

    login.jsp和loginAction.java贴出来看看
      

  11.   

    我怀疑很可能是包冲突,或者是你的Action实现类的问题。你可以debug一下,看看到底在什么地方出错。
      

  12.   

    直接将LoginAction 变成 pojo把