[即时问题解决]Java关于NoSuchMethod之类错误

很久没有更新Blog了,实属最近一段时间实在太忙了,最近才安稳下来,恰好遇到一个问题,顺手更新一篇

最近做开发的时候遇到一个问题:java.lang.NoSuchMethodError

这其实确实是比较好处理的问题,我首先想到的就是会不会代码写得有误呢?那应该是不可能的,如果是代码写的有误,应该是在编译期间就报错了,为啥还会来到运行时呢。

然后再一想,会不会是反射调用出现了问题呢?我顺着Android Log报的错误去具体的代码看,发现代码调用都到我使用的一个SDK里面的代码里去了,这个应该不太可能了,人家是商业SDK,肯定经过长时间的测试。

我还是做自己能做的,想想自己这边是不是有啥问题,于是,开启搜索开始在网上找资料,有一篇文章引起了我的注意,如下:

Java高版本编译低版本运行错误

我检查了下自己的jdk版本,是1.8版本的,我觉得有理由相信是这个错误,于是更改了jdk的编译版本,尝试了jdk1.7 jdk1.6均没有作用。

没办法,又回到了代码本身,仔细阅读代码后发现,这个SDK里面有引用到Gson的代码,我检查了下 gradle里的依赖,发现我之前是把Gson这个项目给屏蔽掉的,突然前两天为了解决工程里的代码冲突问题,屏蔽掉了这个依赖,在该工程依赖的另一个工程里是有一个Gson代码的。于是我赶紧下载了SDK要求的Gson的源代码,对比了本地的Gson代码与所需版本的Gson代码,发现确实在出错的地方,只有新版本的Gson代码才有的方法,遂将Gson版本给替换,完成。

总结就是,这个问题本身不算什么难题,但是刚开始搞这块项目,各种不熟悉里面的结构,导致我一有点错误,就直接网上搜索,没有从代码本身去实际分析,浪费了很多时间,以后还是沉下心来尽量慢慢研究代码本身吧,答案其实一直就在那里。

你可能感兴趣的:(移动平台,Java)