2017-04-30 11 views
2

こんにちはワールドプログラムを作成しているときに、私はこの例外を持っています。スレッド "main"の例外java.lang.NoClassDefFoundError:org/reactivestreams/Publisher?

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

完全なスタックトレースは、このようなものです(私は最初の行は全く関係のないと思いますが、確実にそれを置く)ここでは、コードですあなたが依存含める必要はありません

:コメントから

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 
+0

これを確認してください。http://stackoverflow.com/questions/43003012/objc3648-class-javalaunchhelper-is-implemented-in-both –

+0

私はあなたが与えたリンクに記載されているように、これは単なる警告だと思います?)。根本的な原因ではない –

+0

JARが見つからないと思うので、ここからダウンロードできます - https://mvnrepository.com/artifact/org.reactivestreams/reactive-streams/1.0.0.finalビルドとランタイム。それが役に立ったら教えてください。 – hagrawal

答えて

1

RxJavaは既にそれにコンパイル時の依存関係があるため、Reactive-Streamsを有効にする必要があります。そうでない場合は、正しいバージョンである:

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

とテストの互換性のためのキット:

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

.finalは、私が推測するリリース間違いでした。