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

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

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

你可能感兴趣的:(java反射调用方法NoSuchMethodException的解决方案)