首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >线程"main“java.lang.NoClassDefFoundError: org/reactivestreams/Publisher中的异常?

线程"main“java.lang.NoClassDefFoundError: org/reactivestreams/Publisher中的异常?
EN

Stack Overflow用户
提问于 2017-04-30 14:46:11
回答 1查看 5K关注 0票数 3

在创建hello world程序时,我得到了这个异常。以下是代码:

代码语言:javascript
复制
import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;

/**
 * Created by veneet on 30/04/17.
 */
public class MainApp {
    public static void main(String[] args) {
        // This is where the exception occurs.
        Observable<String> observable = Observable.create(e -> {
            e.onNext("Hello World!");
            e.onNext("Hello World!");
            e.onNext("Hello World!");
            e.onNext("Hello World!");
            e.onNext("Hello World!");
            e.onNext("Hello World!");

            e.onComplete();
        });
        Observer<String> observer = new Observer<String>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(String s) {
                System.out.println(s);
            }

            @Override
            public void onError(Throwable e) {
                System.err.println(e.getMessage());
            }

            @Override
            public void onComplete() {

            }
        };
        observable.subscribeOn(Schedulers.io());
        observable.subscribe(observer);

        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

build.gradle依赖项如下所示:

代码语言:javascript
复制
dependencies {
    compile "io.reactivex.rxjava2:rxjava:2.1.0"
    // https://mvnrepository.com/artifact/org.reactivestreams/reactive-streams
    compile group: 'org.reactivestreams', name: 'reactive-streams', version: '1.0.0.final'
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

完整的堆栈跟踪是这样的(我认为第一行是完全不相关的,但为了确保这样做):

代码语言:javascript
复制
objc[3423]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java (0x10b6dc4c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x10d0194e0). One of the two will be used. Which one is undefined.
Exception in thread "main" java.lang.NoClassDefFoundError: org/reactivestreams/Publisher
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at MainApp.main(MainApp.java:11)
Caused by: java.lang.ClassNotFoundException: org.reactivestreams.Publisher
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 13 more
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-01 17:58:02

从评论中:

您不必包含对反应性流的依赖,因为RxJava已经对其具有编译时依赖关系。否则,正确的版本是:

代码语言:javascript
复制
compile 'org.reactivestreams:reactive-streams:1.0.0'

对于测试兼容性工具包:

代码语言:javascript
复制
testCompile 'org.reactivestreams:reactive-streams-tck:1.0.0'

我想,.final是一个发布错误。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43707654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档