java 映射器函数返回空值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/47652603/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-03 09:43:12  来源:igfitidea点击:

The mapper function returned a null value

javaandroidrx-javaretrofit2rx-java2

提问by Expert wanna be

I set same build types for debug and release,

我为调试和发布设置了相同的构建类型,

buildTypes {
    debug {
        buildConfigField "String", "API_BASE_URL", "\"https://www.testUrl.com/api/\""
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release_key
    }
    release {
        buildConfigField "String", "API_BASE_URL", "\"https://www.testUrl.com/api/\""
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release_key
    }
}

But If I build with the release, I got the below error. Also, the server response is exactly same.

但是,如果我使用发行版进行构建,则会出现以下错误。此外,服务器响应完全相同。

W/System.err: java.lang.NullPointerException: The mapper function returned a null value.
W/System.err:     at b.a.e.b.b.a(Unknown Source)
W/System.err:     at b.a.e.e.b.bs$a.onNext(Unknown Source)
W/System.err:     at b.a.e.e.b.cm$a.onNext(Unknown Source)
W/System.err:     at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(Unknown Source)
W/System.err:     at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(Unknown Source)
W/System.err:     at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(Unknown Source)
W/System.err:     at b.a.l.subscribe(Unknown Source)
W/System.err:     at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(Unknown Source)
W/System.err:     at b.a.l.subscribe(Unknown Source)
W/System.err:     at b.a.e.e.b.cm$a.a(Unknown Source)
W/System.err:     at b.a.e.e.b.cm.subscribeActual(Unknown Source)
W/System.err:     at b.a.l.subscribe(Unknown Source)
W/System.err:     at b.a.e.e.b.bs.subscribeActual(Unknown Source)
W/System.err:     at b.a.l.subscribe(Unknown Source)
W/System.err:     at b.a.e.e.b.bw.subscribeActual(Unknown Source)
W/System.err:     at b.a.l.subscribe(Unknown Source)
W/System.err:     at b.a.e.e.b.dd$b.run(Unknown Source)
W/System.err:     at b.a.s$a.run(Unknown Source)
W/System.err:     at b.a.e.g.j.run(Unknown Source)
W/System.err:     at b.a.e.g.j.call(Unknown Source)
W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err:     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
W/System.err:     at java.lang.Thread.run(Thread.java:761)

回答by azizbekian

The problem comes from RxJava 2, which won't allow nullvalues to be passed down the stream. In particularly your case, you have a mapper function, that returns a nullvalue, which the exception clearly states.

问题来自 RxJava 2,它不允许null值在流中传递。特别是在您的情况下,您有一个映射器函数,它返回一个null值,异常清楚地说明了该值。

You can reproduce that with following chunk of code:

您可以使用以下代码块重现它:


    Observable.just(1)
              .map(integer -> null)
              .test()
              .assertError(throwable -> 
                    "The mapper function returned a null value.".equals(throwable.getMessage()));