Unable to instantiate Action, xxxAction, defined for 'xxx' in namespace '/'xxxAction解决方案

 

 一.问题显示: java.lang.ClassNotFoundException: cn.soft.action_method.emAction

Unable to instantiate Action, cn.soft.action_method.emAction, defined for 'em_save' in namespace '/'cn.soft.action_method.emAction  

二.Stacktraces:堆栈追踪

 Stacktrace(堆栈跟踪)是一个非常有用的调试工具. 在未捕获的异常被抛出时(或者手动制造堆栈跟踪的时候)它让你看到你调到的堆(意思是,在某一点调用方法的堆). 不仅显示出出现错误的地方, 也显出程序在那个地方是如何结束的.

三.我这里出现的问题是:Action 配置出错了

cn.soft.action_method.emAction这个找不到,而我之前在项目里有一个包,也用过通配符

 <action name="*_*" class="cn.soft.action_method.{1}Action"
      method="{2}"   

所以后来配置另一个文件的通配符,运行时em_save,和之前的配置发生了冲突,找不到emAction,运行struts.xml是有顺序的


    <package name="validationPkg" extends="struts-default" namespace="/">
      <action name="em_*" class="cn.soft.validation.RegisterAction"
     method="{1}"/> 

以后为避免这种情况,通配符不要使用在Action名字的位置,方法的位置就好

四.出现这个问题的原因主要有两个

1、如果项目没有使用Spring,则struts.xml配置文件中,这个action的class属性的路径没有写完整,应该是包名.类名

2、如果项目使用了Spring,那就是applicationContext.xml里面没有为这个action定义bean。这样strus.xml中的对应action的class属性的值就是Spring配置文件中bean的id,比如:

applicationContext.xml


<bean id="adminAction" class="go.derek.action.AdminAction"
    scope="prototype">
    </bean>
struts.xml

<action name="admin" class="adminAction" method="execute">
            <result>/admin.jsp</result>
        </action>


原文:https://blog.youkuaiyun.com/exceptional_derek/article/details/25735457 
 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值