Struts2.0和sping3.0结合 诡异异常Unable to instantiate Action
本人在整合一个小项目,struts2.2.3版本和sping3.0结合 在登陆页面点击登陆的时候(action路径为:login.action)报了一个很诡异的异常,查了很多资料无人解读,希望有人帮忙解决一下:
exception
Unable to instantiate Action, loginAction, defined for 'login' in namespace '/'loginAction
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:318)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:198)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)
root cause
java.lang.ClassNotFoundException: loginAction
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
com.opensymphony.xwork2.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:157)
com.opensymphony.xwork2.ObjectFactory.getClassInstance(ObjectFactory.java:107)
com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:223)
。。。。。。。。。。。
在只有struts的时候项目运行是没有问题的 但是加入了sping之后就遇到了顶上的这个问题。浪费了很长时间。下面是我的配置文件:
struts.xml:
<constant name="struts.objectFactory" value="spring" />
<package name="default" extends="struts-default" >
<interceptors>
<!-- 定义AuthenticationInterceptor拦截器 -->
<interceptor name="auth"
class="interceptor.AuthenticationInterceptor"/>
<!-- 定义我们自己的拦截器栈,在Action的配置中,可以直接引用这个拦截器栈 -->
<interceptor-stack name="securityStack">
<interceptor-ref name="auth"/>
<interceptor-ref name="defaultStack">
<param name="workflow.excludeMethods">default</param>
<param name="validation.excludeMethods">default</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="securityStack"></default-interceptor-ref>
<global-results >
<result name="login">/index.jsp</result>
</global-results>
<action name="admin" class="action.AdminAction">
<result name="addSuccess">/main.jsp</result>
<result name="input">/newOperator.jsp</result>
</action>
<action name="login" class="loginAction">
<result name="success">/main.jsp</result>
<result name="login">/index.jsp</result>
</action>
</package>
applicationContext.xml:
<bean id="adminService" class="business.AdminService" scope="prototype"/>
<bean id="loginAction" class="action.LoginAction"
scope="prototype">
<property name="service" ref="adminService" />
</bean>
希望各位大牛给我指点迷津!!!!!
[解决办法]
<action name="login" class="loginAction">
<bean id="loginAction" class="action.LoginAction"
scope="prototype">
这个class="loginAction"能找到哪个类呢loginAction? 类写法没问题?
[解决办法]
<bean id="loginAction" class="action.LoginAction"
scope="prototype">
class的路径错了
[解决办法]
我也遇到这个问题了,你解决了没。。
[解决办法]
应该是class的路径问题
[解决办法]
Unable to instantiate Action, loginAction, defined for 'login' in namespace '/'loginAction
这里的/loginAction namespace是哪里配置的 看看在此namespace下能对应到它真正的物理路径上去吗
[解决办法]
spring和struts没集成
struts配置里写上
<constant name="struts.objectFactory" value="spring">
导入struts2-spring-plugin-2.2.3.jar
[解决办法]
应该是这样写
<constant name="struts.objectFactory.spring.autoWire" value="name"/>
[解决办法]
有时候,命名空间namespace可以去掉,不用写
[解决办法]
namespace 好像有默认值的哦
[解决办法]
拦截器和action的代码发上来看看,因为Action对象实例在ActionContext对象实例之前创建的,我怀疑是这里有问题