首页 > 解决方案 > 执行 AndroidSchedulers.mainThread() 时出错

问题描述

我有一个片段,其中我实现了一些代码:

    public void onViewCreated(@androidx.annotation.NonNull View v, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(v, savedInstanceState);
        button = v.findViewById(R.id.button2);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Observable<String> bookObservable = getBookObservalbel();
                Observer<String> bookObserver = getBookObserver();
                bookObservable.observeOn(Schedulers.io())
                        .subscribeOn(AndroidSchedulers.mainThread())
                        .subscribe(bookObserver);
            }
        });
    } 

 private Observer<String> getBookObserver() {
        return new Observer<String>() {
            @Override
            public void onSubscribe(@NonNull Disposable d) {

            }

            @Override
            public void onNext(@NonNull String s) {
                Log.d(TAG, "onNext: " + s);
            }

            @Override
            public void onError(@NonNull Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        };
    }


    private Observable<String> getBookObservalbel() {
        return Observable.just("1", "2", "3");

    }

但是在运行它时,我收到了这个错误:-

    java.lang.BootstrapMethodError: Exception from call site #1 bootstrap method
        at io.reactivex.rxjava3.android.schedulers.AndroidSchedulers.<clinit>(AndroidSchedulers.java:33)
        at io.reactivex.rxjava3.android.schedulers.AndroidSchedulers.mainThread(AndroidSchedulers.java:44)
        at com.example.rxjavatut.second$1.onClick(second.java:58)
        at android.view.View.performClick(View.java:6608)
        at android.view.View.performClickInternal(View.java:6585)
        at android.view.View.access$3100(View.java:785)
        at android.view.View$PerformClick.run(View.java:25921)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:201)
        at android.app.ActivityThread.main(ActivityThread.java:6810)
        at java.lang.reflect.Method.invoke(Native Method)
     Caused by: java.lang.ClassCastException: Bootstrap method returned null

我在我的年级中为 rxjava 和 rxandroid 使用这些依赖项

  implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'

  implementation 'io.reactivex.rxjava3:rxjava:3.0.3'

我尝试在我的 mainActivity 中的旧版本 rxjava 和 rxandroid 中运行此代码,它运行完美。

我无法弄清楚问题出在哪里,您能否分享一些关于我可能做错了什么的信息。

标签: androidrx-java2rx-androidrx-java3

解决方案


RxJava3 需要 Java 8。更新您的 Java 版本:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

推荐阅读