exception:java.lang.ClassNotFoundException:org.reactivestreams.Publisher

在IntelliJ IDEA 2017.1.2(Build#IC-171.4249.39)中使用RxJava和Kotlin开发的基于JavaFX Gradle的应用程序中,出现exception:

线程“JavaFX Application Thread”中的exceptionjava.lang.NoClassDefFoundError:org / reactivestreams / Publisher

每次这样的代码

return Completable.complete() 

被执行。 在类似问题的建议之后为什么我得到NoClassDefFoundError:org / reactivestreams / Publisher ,我试图添加包括反应流到我的build.gradle脚本的dependencies

 dependencies { compile 'org.jetbrains.kotlin:kotlin-stdlib:1.1.2' compile 'org.reactivestreams:reactive-streams:1.0.0' compile 'io.reactivex.rxjava2:rxkotlin:2.0.0' } 

但问题依然存在。 依赖关系树看起来像这样:

 compile - Dependencies for source set 'main' (deprecated, use 'implementation ' instead). +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2 | \--- org.jetbrains:annotations:13.0 +--- org.reactivestreams:reactive-streams:1.0.0 \--- io.reactivex.rxjava2:rxkotlin:2.0.0 +--- io.reactivex.rxjava2:rxjava:2.0.7 | \--- org.reactivestreams:reactive-streams:1.0.0 \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.0 -> 1.1.2 (*) compileClasspath - Compile classpath for source set 'main'. +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2 | \--- org.jetbrains:annotations:13.0 +--- org.reactivestreams:reactive-streams:1.0.0 \--- io.reactivex.rxjava2:rxkotlin:2.0.0 +--- io.reactivex.rxjava2:rxjava:2.0.7 | \--- org.reactivestreams:reactive-streams:1.0.0 \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.0 -> 1.1.2 (*) +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2 | \--- org.jetbrains:annotations:13.0 +--- org.reactivestreams:reactive-streams:1.0.0 \--- io.reactivex.rxjava2:rxkotlin:2.0.0 +--- io.reactivex.rxjava2:rxjava:2.0.7 | \--- org.reactivestreams:reactive-streams:1.0.0 \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.0 -> 1.1.2 (*) \--- org.jetbrains.kotlin:kotlin-annotation-processing:1.1.2 \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2 \--- org.jetbrains:annotations:13.0 kaptTest \--- org.jetbrains.kotlin:kotlin-annotation-processing:1.1.2 \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2 \--- org.jetbrains:annotations:13.0 runtime - Runtime dependencies for source set 'main' (deprecated, use 'runtimeOnly ' instead). +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2 | \--- org.jetbrains:annotations:13.0 +--- org.reactivestreams:reactive-streams:1.0.0 \--- io.reactivex.rxjava2:rxkotlin:2.0.0 +--- io.reactivex.rxjava2:rxjava:2.0.7 | \--- org.reactivestreams:reactive-streams:1.0.0 \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.0 -> 1.1.2 (*) runtimeClasspath - Runtime classpath of source set 'main'. +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2 | \--- org.jetbrains:annotations:13.0 +--- org.reactivestreams:reactive-streams:1.0.0 \--- io.reactivex.rxjava2:rxkotlin:2.0.0 +--- io.reactivex.rxjava2:rxjava:2.0.7 | \--- org.reactivestreams:reactive-streams:1.0.0 \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.0 -> 1.1.2 (*) testCompile - Dependencies for source set 'test' (deprecated, use 'testImplementation ' instead). +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2 | \--- org.jetbrains:annotations:13.0 +--- org.reactivestreams:reactive-streams:1.0.0 \--- io.reactivex.rxjava2:rxkotlin:2.0.0 +--- io.reactivex.rxjava2:rxjava:2.0.7 | \--- org.reactivestreams:reactive-streams:1.0.0 \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.0 -> 1.1.2 (*) testCompileClasspath - Compile classpath for source set 'test'. +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2 | \--- org.jetbrains:annotations:13.0 +--- org.reactivestreams:reactive-streams:1.0.0 \--- io.reactivex.rxjava2:rxkotlin:2.0.0 +--- io.reactivex.rxjava2:rxjava:2.0.7 | \--- org.reactivestreams:reactive-streams:1.0.0 \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.0 -> 1.1.2 (*) testRuntime - Runtime dependencies for source set 'test' (deprecated, use 'testRuntimeOnly ' instead). +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2 | \--- org.jetbrains:annotations:13.0 +--- org.reactivestreams:reactive-streams:1.0.0 \--- io.reactivex.rxjava2:rxkotlin:2.0.0 +--- io.reactivex.rxjava2:rxjava:2.0.7 | \--- org.reactivestreams:reactive-streams:1.0.0 \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.0 -> 1.1.2 (*) testRuntimeClasspath - Runtime classpath of source set 'test'. +--- org.jetbrains.kotlin:kotlin-stdlib:1.1.2 | \--- org.jetbrains:annotations:13.0 +--- org.reactivestreams:reactive-streams:1.0.0 \--- io.reactivex.rxjava2:rxkotlin:2.0.0 +--- io.reactivex.rxjava2:rxjava:2.0.7 | \--- org.reactivestreams:reactive-streams:1.0.0 \--- org.jetbrains.kotlin:kotlin-stdlib:1.1.0 -> 1.1.2 (*) 

正如你所看到的, org.reactivestreams:反应流是存在于每个环境。

现在,我已经设法通过手动添加reactive-streams-1.0.0.jar来解决问题,但是我不喜欢这个解决方案。

有人可以建议一个更好的解决方案? 谢谢!