java反射调用方法NoSuchMethodException的解决方案
作者:牵着骆驼迷神
这篇文章主要介绍了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)如果以上方法试了,没有别的解决方式。实在搞不定,找人帮忙解决。浪费太多时间在环境问题上,不明智,也没啥丢人的,有时候可能只是说一说自己就明白了。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。