2012-03-26 15:40
15人閱讀
收藏
編輯
刪除
- java.lang.NoSuchMethodException:com.yxq.action.AdminAction.SchoolAdd()
-
- 不久前在學(xué)習(xí)struts時(shí)出現(xiàn)這個(gè)錯(cuò)誤,在網(wǎng)上搜索了半天,發(fā)現(xiàn)答案不一。將其總結(jié)如下,以方便大家參考。
-
-
-
- 1、
- 你有沒(méi)有試試看 其它的方法能不能用,要是都是這種情況的話,可能是你的Action類(lèi)沒(méi)有繼承structs里面的DispatchAction或者其它的類(lèi)。還有你注意下方法的參數(shù)列表,類(lèi)型順序要正確才行,是按照以下順序的:ActionMapping mapping,ActionForm form ,HttpServletRequest request,HttpServletResponse response
-
-
-
- 2、
- 發(fā)現(xiàn)有兩種錯(cuò)誤可能引起上述異常:
- 一.Action 類(lèi)的方法被定義成 private 類(lèi)型.
- 如下 Action 中被訪問(wèn)的方法被定義成 private 類(lèi)型.程序在訪問(wèn)其方法時(shí),會(huì)拋出以上異常.
-
-
-
- 3、
- 其實(shí)java.lang.NoSuchMethodException這個(gè)異常的根本原因有兩個(gè):第一,缺少某些jar文件;第二,某些jar文件有重復(fù)。
-
-
- 4、
- 使用struts2框架出現(xiàn)的問(wèn)題
- 在頁(yè)面使用jquery ajax 調(diào)用action中的vaildUname方法,報(bào)錯(cuò),說(shuō)我的方法不存在。但實(shí)際是存在的。
- public String vaildUname(String loginName) throws Exception{}
- 問(wèn)題就在這個(gè)參數(shù)上,struts2中是不能有參數(shù)的(具體我也不知道為什)
-
- 解決方法:
- private String loginName;
- public String vaildUname() throws Exception{}
- loginName的getter和setter方法
- 這樣在使用ajax調(diào)用的時(shí)候,就可以了
-
- ? struts2是通過(guò)反射機(jī)制來(lái)執(zhí)行action的方法,struts2規(guī)范目前action方法是不需要參數(shù)的,有參數(shù)的方法和沒(méi)參數(shù)的方法是兩個(gè)不同的方法,所以會(huì)出現(xiàn)找不到的情況。
-
-
-
- 5、
- jar版本不對(duì)
- 應(yīng)該是3.6jar包的問(wèn)題,換回3.2的包又沒(méi)事了
-
-
-
-
- 6、
- java.lang.NoSuchMethodException 這個(gè)異常是指你的action里面沒(méi)有這個(gè)方法,說(shuō)明已經(jīng)找到了action 但是沒(méi)有找到方法,所以有2個(gè)情況,
- 第1種情況是,你提交到的不是這個(gè)action ,查查配置文件,有沒(méi)有一樣的path
-
-
- 第2種情況,你的action里面沒(méi)有這個(gè)方法
作者:chengchanglun 發(fā)表于2012-4-9 15:00:50
原文鏈接