NoClassDefFoundError io.reactivex.Flowable

各路宝宝都看看这个异常:

    java.lang.NoClassDefFoundError: io.reactivex.Flowable
        at io.reactivex.Observable.bufferSize(Observable.java:126)
        at io.reactivex.Observable.flatMap(Observable.java:7390)
        at io.reactivex.Observable.flatMap(Observable.java:7357)
        at io.reactivex.Observable.flatMap(Observable.java:7328)
        at com.example.rxjavademo.Main2Activity.requsetDataRetry(Main2Activity.java:189)
        at com.example.rxjavademo.Main2Activity.onClick(Main2Activity.java:97)

你的第一反应是啥?各种百度google,最后呢?如果说我代码没改就好了,你信不?

打死你都不信?我也是。




宝宝心里苦,宝宝不说。我们的电脑不能联网,只能使用jar包或者aar ,所以我下载的离线的rxjava-2.1.1.jar
和rxandroid-2 aar包,那我的build.gradle是这样写的。

    compile(name: 'rxandroid-2.0.1', ext: 'aar')
    compile files('libs/rxjava-2.1.1.jar')
我是查了好多资料,可以没有遇到相同情况的?说实话,我是只勤奋的农民工,晚上回到家还要解决这shit bug,
在家里写了测试demo,只是没有联网请求数据,操作符和流程一摸一样。没问题,我想是xutil网络的问题。第二天
到办公室,去掉联网部分,结果还是报错。。。此时一脸懵逼,有木有?一样的代码?这到底是做的啥孽?
怀着感(tong)恩(ku)的心,研究半天还是那样。晚上又对比,一行行对比,还是一样,到家就好,有木有?终于在
过了几天后,我察觉,家里的是依赖网络的插件,于是我把依赖的jar包和aar在家实验了下,结果也挂了,顿时

宝宝无语了。宝宝依赖的插件,

依赖的jar和aar 和联网下载的竟然不一样


    compile 'io.reactivex.rxjava2:rxjava:2.0.1'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
有人会说版本号的问题,我也尝试了把依赖的版本号的aar 和jar下载一样在添加,还是不行。这个不怨我,离线就
是个坑!为那些不能联网的宝宝默哀!

代码就是这样子的

public void requsetDataRetry(BaseRequsetReq req) {
    Observable.just(req)
            .subscribeOn(Schedulers.io())
            .flatMap(new Function<BaseRequsetReq, ObservableSource<BaseRequsetReq>>() {
                @Override
                public ObservableSource<BaseRequsetReq> apply(BaseRequsetReq baseRequsetReq) throws Exception {
                    BaseRequsetReq requset = syncRequset(baseRequsetReq);
                    //网络成功
                    if (requset.errorBean == null && requset.resultBean!=null) {
                        return  Observable.just(requset);
                    } else  {
                        //token过期,重试
                        if (requset.errorBean != null && Constants.ErrorCode_TimeOut.equals(requset.errorBean.resultCode)) {
                            return Observable.error(new TokenOvertimeExeception());
                        }
                        //网络失败,重试
                        return Observable.error(new MyRetryException());
                    }
                }
            }).retryWhen(new RetryWithTime())
            .observeOn(AndroidSchedulers.mainThread(),false,126)
            .subscribe(new Observer<BaseRequsetReq>() {
                @Override
                public void onSubscribe(Disposable disposable) {
                }

                @Override
                public void onNext(BaseRequsetReq baseRequsetReq) {
                    if (listener != null) {//成功的回掉
                        listener.onSuccess(baseRequsetReq);
                    }
                }

                @Override
                public void onError(Throwable throwable) {
                    if (listener != null) {//成功的回掉
                        listener.onError(throwable);
                    }
                }

                @Override
                public void onComplete() {}
            });
}

猜你喜欢

转载自blog.csdn.net/qq_35599978/article/details/80316360