2017-04-05 55 views
2

Stream.java爲什麼我得到NoClassDefFoundError的:組織/ reactivestreams /發行商

import io.reactivex.*; 


public class Stream { 

    public static void main(String args[]) 
    { 

     Observable.just("Howdy!").subscribe(System.out::println); 

    } 
} 

的build.gradle:

group 'com.sakhunzai' 
version '1.0-SNAPSHOT' 

apply plugin: 'java' 

sourceCompatibility = JavaVersion.VERSION_1_8 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'io.reactivex.rxjava2:rxjava:2.0.5' 
    testCompile group: 'junit', name: 'junit', version: '4.11' 
} 

例外:

Exception in thread "main" java.lang.NoClassDefFoundError: org/reactivestreams/Publisher 
.... 
Caused by: java.lang.ClassNotFoundException: org.reactivestreams.Publisher 

我下面的tutorial在第六頁,除了我決定使用gradle而不是maven

編輯

也許有些問題與gradle這個和IntelliJ IDEA的

下列固定的問題: settings.gradle:

rootProject.name = 'JavaRx' 

include "buildSrc" 
+0

我想你應該添加依賴於org.reactivestreams.reactive流 –

回答

4

例外意味着該類org.reactivestreams.Publisher在運行時不可用。所以它在類路徑中丟失了。您可以通過在gradle中添加依賴關係引用來添加到類路徑中。

根據所使用的版本,它應該是這樣的:

dependencies { 
    compile group: 'org.reactivestreams', name: 'reactive-streams', version: '1.0.0' 
    ...<the other depandancies>... 
} 
+0

但gradle這個拒絕進口的依賴,什麼也不做 – sakhunzai

+0

哦,對不起,就我現在看到的,你可以參考maven central。所以https://search.maven.org的例子應該會更好。 (在我使用「我的」已知存儲庫作爲參考之前)。希望這有效。如果沒有,你應該檢查你真正使用過的倉庫(看看你的倉庫是如何定義這個虛假的)。 因此,請嘗試:編譯'org.reactivestreams:reactive-streams:1.0.0.final' – nikmaster

+0

問題是爲什麼我應該關心依賴關係,是不是Gradle的任務(取得關聯的依賴關係)? – sakhunzai

相關問題