不久前在学习struts时出现这个错误,在网上搜索了半天,发现答案不一。将其总结如下,以方便大家参考。

1、

你有没有试试看 其它的方法能不能用,要是都是这种情况的话,可能是你的Action类没有继承structs里面的DispatchAction或者其它的类。还有你注意下方法的参数列表,类型顺序要正确才行,是按照以下顺序的:ActionMapping mapping,ActionForm form ,HttpServletRequest request,HttpServletResponse response

2、

发现有两种错误可能引起上述异常:

一.Action 类的方法被定义成 private 类型.

如下 Action 中被访问的方法被定义成 private 类型.程序在访问其方法时,会抛出以上异常.

3、

其实java.lang.NoSuchMethodException这个异常的根本原因有两个:第一,缺少某些jar文件;第二,某些jar文件有重复。

4、

使用struts2框架出现的问题
在页面使用jquery ajax 调用action中的vaildUname方法,报错,说我的方法不存在。但实际是存在的。
public String vaildUname(String loginName) throws Exception{}
问题就在这个参数上,struts2中是不能有参数的(具体我也不知道为什)

解决方法:
private String loginName;
public String vaildUname() throws Exception{}
loginName的getter和setter方法
这样在使用ajax调用的时候,就可以了

· struts2是通过反射机制来执行action的方法,struts2规范目前action方法是不需要参数的,有参数的方法和没参数的方法是两个不同的方法,所以会出现找不到的情况。

5、

jar版本不对

应该是3.6jar包的问题,换回3.2的包又没事了

6、

java.lang.NoSuchMethodException 这个异常是指你的action里面没有这个方法,说明已经找到了action 但是没有找到方法,所以有2个情况,

第1种情况是,你提交到的不是这个action ,查查配置文件,有没有一样的path

第2种情况,你的action里面没有这个方法

下面是转载的

public class NoSuchMethodExceptionextends Exception

无法找到某一特定方法时,抛出该异常。

------------------------------------------------------------------------------------------------------------------------

事实上我有特定的方法,为什么struts2报此异常呢?

以下是struts2配置文件片段:

<package name="basedate" extends="struts-default" namespace="/basedate">
<!-- 服务商管理 -->
        <action name="saveOrUpdateBranch" class="branchAction" method="saveOrUpdateBranch">
            <result name="success">/WEB-INF/pages/srvclink/basedate/branch/branch.jsp</result>
            <result name="input">/WEB-INF/pages/srvclink/basedate/branch/branch.jsp</result>
        </action>
        <action name="editBranch" class="branchAction" method="editBranch">
            <result name="success">/WEB-INF/pages/srvclink/basedate/branch/branch.jsp</result>
        </action>
        <action name="deleteBranch" class="branchAction" method="deleteBranch">
            <result name="success" type="redirect">saveOrUpdateBranch.action?isNew=true</result>
        </action>
        <action name="searchBranch" class="branchAction" method="searchBranch">
            <result name="success">/WEB-INF/pages/srvclink/basedate/branch/branch.jsp</result>
        </action>

<!-- 运输商管理 -->
        <action name="saveOrUpdateBranch" class="carrierAction" method="saveOrUpdateBranch">
            <result name="success">/WEB-INF/pages/srvclink/basedate/carrier/carrier.jsp</result>
        </action>
        <action name="editCarrier" class="carrierAction" method="editCarrier">
            <result name="success">/WEB-INF/pages/srvclink/basedate/carrier/carrier.jsp</result>
        </action>
        <action name="deleteCarrier" class="carrierAction" method="deleteCarrier">
            <result name="success" type="redirect">saveOrUpdateCarrier.action?isNew=true</result>
        </action>
        <action name="searchCarrier" class="carrierAction" method="searchCarrier">
            <result name="success">/WEB-INF/pages/srvclink/basedate/carrier/carrier.jsp</result>
        </action>
    </package>

细心的朋友应该能够发现,因为复制粘贴惹的祸。导致同一命名空间下存在两个同名的action定义,这不是关键,关键问题是,两个同名action的实例引用是不一样的,struts2是顺序解析配置的action,如果我们请求saveOrUpdateBranch,struts2会在命名空间为/basedate里查找请求的action是否存在,如果存在就调用这个action,如果不存在报异常告诉用户“在请求的命名空间中找不到指定的action”。这里我们请求的action是存在的,错就错在,它是顺序解析,即便你第一个action定义无误,但是它并未调用。它会继续查找/basedate下的action,当它发现还有一个命名为saveOrUpdateBranch的action时,也是最后一个aciton时,它才调用这个请求的action。但是我们这里最后执行的action的引用又确实不存在。
我们最后定义的这个同名的action的实例是class="carrierAction" 。事实上,实例carrierAction确实没有"saveOrUpdateBranch"方法,所以struts2就抛出无法找到特定的方法的异常。

粗心大意害死人哦 ...

struts2的java.lang.NoSuchMethodException错误的更多相关文章

  1. struts2的java.lang.NoSuchMethodException异常处理(转)

    不久前在学习struts时出现这个错误,在网上搜索了半天,发现答案不一.将其总结如下,以方便大家参考. 1. 你有没有试试看 其它的方法能不能用,要是都是这种情况的话,可能是你的Action类没有继承 ...

  2. struts2的java.lang.NoSuchMethodException异常处理

    1. 你有没有试试看 其它的方法能不能用,要是都是这种情况的话,可能是你的Action类没有继承structs里面的DispatchAction或者其它的类.还有你注意下方法的参数列表,类型顺序要正确 ...

  3. MyBatis3.4.0以上的分页插件错误:Could not find method on interface org.apache.ibatis.executor.statement.StatementHandler named prepare. Cause: java.lang.NoSuchMethodException: org.apache.ibatis.executor.stateme

    错误: Could not find method on interface org.apache.ibatis.executor.statement.StatementHandler named p ...

  4. MapReduce错误之Error: java.lang.RuntimeException: java.lang.NoSuchMethodException的解决方法

    今天跑MapReduce项目的时候遇到了这个问题,日志如下所示: // :: DEBUG ipc.ProtobufRpcEngine: Call: getDiagnostics took 19ms E ...

  5. 错误处理:java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter

    部署项目时,启动Tomcat一直出错:java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter SEVE ...

  6. springboot访问出错,mapperScan导包错误java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider.<init>() at java.lang.Class.getConstructor0(Class.java:3082) ~[na:1.8.0_172] at java.

    2019-08-06 12:42:03.153 ERROR 10080 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Se ...

  7. Stacktraces java.lang.NoSuchMethodException: com.liuyang.action.UserAction.add()

    Struts Problem Report Struts has detected an unhandled exception: Messages: com.liuyang.action.UserA ...

  8. java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet的解决方案

    tomcat7启动后出现:java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet这个问题. 并且访问 ...

  9. java.lang.NoSuchMethodException

    这个异常遇到过若干次,提示信息也比较清楚的指示出它的特点,当无法找到某一特定方法时,就会抛出该异常! 我所遇到的抛出此异常的情景主要有以下两种: 1:对应的JAVA类中没有对应的属性,也就是说在页面的 ...

随机推荐

  1. [WC2007]剪刀石头布(最大流)

    洛古 一句话题意:给定一张图,每两点之间有一条有向边或无向边,把所有无向边定向,使图中三元环个数尽量多 因为原图是一个完全图,假设图中任意三点都能构成三元环,那么途中三元环的个数为:\(\binom{ ...

  2. Codeforces Gym 101252D&&floyd判圈算法学习笔记

    一句话题意:x0=1,xi+1=(Axi+xi%B)%C,如果x序列中存在最早的两个相同的元素,输出第二次出现的位置,若在2e7内无解则输出-1. 题解:都不到100天就AFO了才来学这floyd判圈 ...

  3. Django-ContentType的使用

    一.神器ContentType 如果 继续增加课程 价格策略表还得增加字段 这样django自带一个contentType 帮助我们解决表之间的依赖关系: 1.从settings文件可以看到原生就支持 ...

  4. CMDB服务器管理系统【s5day90】:创建资产更新服务器硬盘信息

    1.创建硬件资产信息 import json from django.shortcuts import render,HttpResponse from django.views.decorators ...

  5. 第七节: EF的三种事务的应用场景和各自注意的问题(SaveChanges、DBContextTransaction、TransactionScope)

    一. 什么是事务 我们通俗的理解事务就是一系列操作要么全部成功.要么全部失败(不可能存在部分成功,部分失败的情况). 举一个事务在我们日常生活中的经典例子:两张银行卡(甲.乙),甲向乙转钱,整个过程需 ...

  6. LINUX 常用命令(一)

    1.LINUX系统常用命令实例: A0 LINUX命令分内置命令和非内置命令! 一般而言,内置命令就是指在/bin ./usr/bin下系统默认的命令! 非内置命令需要加上命令的绝对路径执行!比如我们 ...

  7. PHP数组——数组正则表达式、数组、预定义数组

    正则表达式 1.替换 $s = "hello5world"; $s = preg_replace("/\d/","#",$s); echo ...

  8. 【转载】Jenkins安装以及邮件配置

    转载:http://www.nnzhp.cn/archives/590 Jenkins介绍 Jenkins是一个java开发的.开源的.非常好用持续集成的工具,它能帮我们实现自动化部署环境.测试.打包 ...

  9. html 超链接标签 锚点 a标签伪类

    一个简易的连接 <a href="01.html">01</a> <body> <a href="01.html" t ...

  10. 「luogu2486」[SDOI2011] 染色

    https://www.luogu.org/problemnew/show/P2486 轻重链剖分后,问题转化为一个链上的问题: 线段树维护区间内的颜色段数量,左端点.右端点的颜色: 线段树注意事项 ...