java反射调用方法NoSuchMethodException的解决方案

目录
  • java反射调用方法NoSuchMethodException
  • NoSuchMethodException问题总结
    • 1、编译异常,这个很容易发现并解决
    • 2、编译正常,运行报错

java反射调用方法NoSuchMethodException

1、方法定义成 public类型.

2、getMethod传参要正确

  • 比如调用定义的:public void   show(Object obj)
  • 要这样调用   clazz.getMethod("show",Object.class);而不是obj.class

3、invoke时invoke(this,obj)

  • 传参要正确,看好传的是对象,this是调用该方法的类实例对象,obj是方法的实参

NoSuchMethodException问题总结

1、编译异常,这个很容易发现并解决

  • method真的没有
  • 替换jar包没有clean project。

2、编译正常,运行报错

这是一个遇到之后让人纳闷的异常,脑袋不转弯的时候真的容易被卡住。

这时只要去编译目录下:

1)查看下相应的jar包是否被引入;如果没有,咋把jar包拷入相应的目录;pom项目的话则检查下依赖的scope是不是provided等不随项目一起发布的配置。

2)检查下对应的jar包是否存在多个版本,导致没有加载期望的jar包,我遇到的问题就是这样的。

3)重新导入项目,下策,但是绝大多数情况有效。但有时候因为项目很复杂、时间紧张等原因不适合这么做。

4)如果以上方法试了,没有别的解决方式。实在搞不定,找人帮忙解决。浪费太多时间在环境问题上,不明智,也没啥丢人的,有时候可能只是说一说自己就明白了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list错误解决办法

    java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list错误解决办法 玩web的SSH总会有些令你意想不到的exception,这里其中有很多事自己不小心,或者马虎所造成.因此,解决的方案会各有不同,别人出现的异常解决方案对你的可能无效,就像上面的我报的异常一样,百度了很多很多次,给我的答案无非就是在aop上加上一句,但是非常抱歉,我加上去无效!所以还是那句话,对于自己的异常,还是要自己解决. 首先说明一下,我这次的练习的ssh结构

  • Java上传文件错误java.lang.NoSuchMethodException的解决办法

    错误详情: java.lang.NoSuchMethodException: [Lorg.springframework.web.multipart.MultipartFile;.<init>() at java.lang.Class.getConstructor0(Unknown Source) at java.lang.Class.getDeclaredConstructor(Unknown Source) at org.springframework.beans.BeanUtils.in

  • java反射获取和调用方法

    Class类中获取方法: public Method[] getMethods();//获取包括自身和继承(实现)过来的所有的public方法--Method不支持泛型<>,即后面不接<> public Method[] getDeclaredMethods();//获取自身所有的方法(private.public.protected,和访问权限无关),不包括继承的 在jdk1.8后可以直接获取私有属性的方法不需要设置权限 但是仅限于getDeclaredMethod方法 对于Me

  • Java 异常java.lang.NoSuchFieldException解决方案

    这篇文章主要介绍了Java 异常java.lang.NoSuchFieldException解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 异常描述:java.lang.NoSuchFieldException: 处理方式:将属性修改为public 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们.

  • java反射调用方法NoSuchMethodException的解决方案

    目录 java反射调用方法NoSuchMethodException NoSuchMethodException问题总结 1.编译异常,这个很容易发现并解决 2.编译正常,运行报错 java反射调用方法NoSuchMethodException 1.方法定义成 public类型. 2.getMethod传参要正确 比如调用定义的:public void   show(Object obj) 要这样调用   clazz.getMethod("show",Object.class);而不是

  • java 反射调用Service导致Spring注入Dao失效的解决方案

    目录 java 反射调用Service导致Spring注入Dao失效 问题发生背景: 1.错误方法:通过反射执行service的方法 2.解决方法:通过获取Spring容器取得对象 反射调用导致Spring特性失效 1.抛出问题 1.1.编写TestAspectController类 1.2.编写ModuleService类 1.3.编写TestKey注解 1.4.编写TestAspectService 1.5.编写TestAspect切面 2.解决问题 2.1.编写SpringContextU

  • Java使用反射调用方法示例

    本文实例讲述了Java使用反射调用方法.分享给大家供大家参考,具体如下: 一 代码 import java.util.*; import java.io.*; import java.lang.reflect.*; public class ExtendedObjectPoolFactory { // 定义一个对象池,前面是对象名,后面是实际对象 private Map<String, Object> objectPool = new HashMap<>(); private Pr

  • java反射之方法反射的基本操作方法

    本文接上文"java反射之获取类的信息方法(推荐)",利用反射(invoke)来获取一个类中的方法来执行. 1.定义一个类,包含三个名称相同,参数不同的方法 class A{ public void print(){ System.out.println("Hello,World"); } public void print(int a,int b){ System.out.println(a+b); } public void print(String a,Str

  • Java 反射调用静态方法的简单实例

    以往都是使用反射调用实例方法,那么反射如何调用静态方法呢?看下面的例子 Class<?> threadClazz = Class.forName("java.lang.Math"); Method method = threadClazz.getMethod("abs", long.class); System.out.println(method.invoke(null, -10000l)); 只需要将invoke方法的第一个参数设为null即可! 以

  • java反射拼接方法名动态执行方法实例

    近期由于负责项目的一个模块,该模块下有很多分类,每个分类都有一个编码code,这个值是作为一个参数携带过来的.但是每个code确实对应一个方法的. code的值有很多个,自己又不想做ifelse或者switch判断于是就狂搜资料,主要让我发现利用java的反射机制可以完美的解决这个问题 测试代码如下:(可以携带多个参数哦) package com.escs.xmlutils; import java.lang.reflect.Method; public class Test { public

  • c#反射调用方法示例

    获取方法的相关信息的两种形式 反射是一种允许用户获得类信息的C#功能,Type对象映射它代表的底层对象: 在.Net 中, 一旦获得了Type对象,就可以使用GetMethods()方法获取此类型支持的方法列表:该方法的两种形式: MethodInfo [] GetMethods() MethodInfo [] GetMethods(BindingFlags bindingflas)  :它的参数带有一些限制 BindingFlags  是一个枚举 枚举成员 [DeclaredOnly,Inst

  • java关于调用方法的汇总

    以下我们根据JAVA的调用方法做了整理和总结,以及相关的调用代码也做测试,以下来学习下. java方法主要分为三种: 一种是静态方法 这种方法的话用static修饰,这个方法不需要与某个特定对象进行绑定:第二种就是常见的没有用static修饰的方法:第三种就是构造方法,构造方法主要用于对类进行初始化. 静态方法可以使用一个定义且实例化过的对象来调用也可以直接使用类名来调用. 实例方法必须使用一个被定义且实例化过的对象来调用. class A{ //静态方法,可以使用类名点方法名直接调用,比如A.

  • C#高效反射调用方法类实例详解

    C#高效反射调用方法类 1.创建一个业务类(HomeService),在类下创建3个方法 2.正常方式调用类的方法 3.反射方式调用类的方法 4.调用代码 5.调用结果 6.Service类方法代码 内容扩展: 1.正常方式调用类的方法 /// <summary> /// 正常调用类的方法(parm1) /// </summary> /// <returns></returns> public string GetNormalMethod_2() { Hom

  • java通过反射创建对象并调用方法

    这篇文章主要介绍了java通过反射创建对象并调用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.用户类 package com.lf.entity; import com.lf.annotation.SetProperty; import com.lf.annotation.SetTable; public class UserEntity { private String userName; private int userAge;

随机推荐