问题分析:
找不到特定的函数时抛出此类异常,因为编译时依赖的库版本有这个函数的,但是运行时却没有找到,这个异常通常发生在反射调用时被抛出。
解决方案:
找不到特定的函数时抛出此类异常,请注意打包的类库版本信息,一般发生在反射调用时被抛出。请查看日志中此crash附近日志信息,并检查日志报错对应的代码是否写错函数名。
代码示例:
- [backcolor=transparent] [backcolor=transparent]package[backcolor=transparent] com[backcolor=transparent].[backcolor=transparent]alibaba[backcolor=transparent].[backcolor=transparent]mqc[backcolor=transparent].[backcolor=transparent]test[backcolor=transparent];
- [backcolor=transparent] [backcolor=transparent]import[backcolor=transparent] java[backcolor=transparent].[backcolor=transparent]lang[backcolor=transparent].[backcolor=transparent]reflect[backcolor=transparent].[backcolor=transparent]InvocationTargetException[backcolor=transparent];
- [backcolor=transparent] [backcolor=transparent]import[backcolor=transparent] java[backcolor=transparent].[backcolor=transparent]lang[backcolor=transparent].[backcolor=transparent]reflect[backcolor=transparent].[backcolor=transparent]Method[backcolor=transparent];
- [backcolor=transparent] [backcolor=transparent]//简单的反射demo
- [backcolor=transparent] [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]class[backcolor=transparent] V [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]void[backcolor=transparent] printf[backcolor=transparent](){
- [backcolor=transparent] [backcolor=transparent]System[backcolor=transparent].[backcolor=transparent]out[backcolor=transparent].[backcolor=transparent]println[backcolor=transparent]([backcolor=transparent]"printf"[backcolor=transparent]);
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]static[backcolor=transparent] [backcolor=transparent]void[backcolor=transparent] main[backcolor=transparent]([backcolor=transparent]String[backcolor=transparent][][backcolor=transparent] args[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]throws[backcolor=transparent] [backcolor=transparent]ClassNotFoundException[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]SecurityException[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]NoSuchMethodException[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]IllegalArgumentException[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]IllegalAccessException[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]InvocationTargetException[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]InstantiationException[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]Class[backcolor=transparent] c [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]Class[backcolor=transparent].[backcolor=transparent]forName[backcolor=transparent]([backcolor=transparent]"com.alibaba.mqc.test.V"[backcolor=transparent]);
- [backcolor=transparent] [backcolor=transparent]Method[backcolor=transparent] m [backcolor=transparent]=[backcolor=transparent] c[backcolor=transparent].[backcolor=transparent]getDeclaredMethod[backcolor=transparent]([backcolor=transparent]"printf"[backcolor=transparent],[backcolor=transparent]null[backcolor=transparent]);
- [backcolor=transparent] m[backcolor=transparent].[backcolor=transparent]invoke[backcolor=transparent]([backcolor=transparent]c[backcolor=transparent].[backcolor=transparent]newInstance[backcolor=transparent](),[backcolor=transparent]null[backcolor=transparent]);
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]}
参考文献:
1.https://docs.oracle.com/javase/7/docs/api/java/lang/NoSuchMethodException.html
2.http://stackoverflow.com/questions/19913970/java-java-lang-nosuchmethodexception