gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:11:43 25 4
gpt4 key购买 nike

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

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 的依赖是这样的:

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'
}

完整的stacktrace是这样的(我觉得第一行完全不相关,但是放上去保证):

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

最佳答案

来自评论:

你不必包含对 Reactive-Streams 的依赖,因为 RxJava 已经对它有一个编译时依赖。否则,正确的版本是:

compile 'org.reactivestreams:reactive-streams:1.0.0'

对于测试兼容性套件:

testCompile 'org.reactivestreams:reactive-streams-tck:1.0.0'

我猜 .final 是一个发布错误。

关于java - 线程 "main"java.lang.NoClassDefFoundError : org/reactivestreams/Publisher? 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43707654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com