在执行AndroidSchedulers.mainThread()时出错。

问题描述 投票:1回答:1

我有一个片段,我已经实现了一些代码。

    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'

我试着在旧版本的rxjava和rxandroid中运行这段代码,在我的mainActivity那里它运行得很完美。

我无法找出问题所在,请你分享一些信息,说明我可能做错了什么。

android rx-java2 rx-android rx-java3
1个回答
2
投票

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

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.