最近开发新版本应用,直接借用了别人的框架体系,但是下载了其代码后,直接运行在某个环节一点就异常崩溃,直接报异常如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/dd05774fea99cf5adf87fb8e3fd1b372.png)
首先在网上搜索了一下java.lang.IllegalStateException: Fatal Exception thrown on Scheduler这个异常,很多人说是因为使用的okhttp3版本和
logging-interceptor依赖包的版本不一样所致,ok,那我也就改了一下,全部用了3.9.0版本,满怀希望的运行一下,结果不管用,还是报这个错误,然后又搜索了一下caused by: java.lang.assertionerror: illegal type variable reference这个原因,说是混淆的问题,应该加上-keepattributesEnclosingMethod,或者应该添加-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod 这些全部的功能!这样混淆就应该没问题了,但是试了之后任然不管用,这个纠结了,问了源代码开发人员,结果人家那里代码运行ok,心想诡异啊,难道是环境问题,然后检查了一遍配置环境,ok啊,也没问题啊,这是什么原因,然后就根据报错最后这几行,找到了报错的代码,定位出来以后如下图
![](https://i-blog.csdnimg.cn/blog_migrate/d4ae34aac457933f595262a3230496b1.png)
封装的jsonutil工具类里面,原来代码是下面两行,直接返回的数据,也没问题啊,鬼使神差的我突然想到,要不把器参数都定义一下看看是哪里的问题,结果就写成了上面三行的样式,一运行,惊喜啊,异常没了,问题就这么解决了,可是事后想了很久也没想出来这两种写法有什么不同,如果有码友知道,欢迎赐教。
事后总结:有时候不能直接去搜报错的异常问题,看一下出错的代码位置,找一下哪里的问题,在仔细检查一下代码,往往能找到根本问题所在,盲目的去搜一些网上的资料,有时候反而浪费了时间,所以,遇到问题的时候,还是要仔细分析一下,从问题的根本着手,仅此为记,砥砺前行!