0
import rx.*
class Foo extends Verticle {
    def start() {

        // This works:  prints 1
        Observable.create({ s -> s.onNext(1); s.onCompleted()}).subscribe({println it});

        container.deployVerticle("groovy:path.to.Bar")
    }
}

class Bar extends Verticle {
    def start() {
         // This fails
         Observable.create({ s -> s.onNext(1); s.onCompleted()}).subscribe({println it});
    }
}

Groovy verticle (Bar.start) の例外 groovy.lang.MissingMethodException: メソッドの署名がありません: static rx.Observable.create() が適用されます

クラスローダーの問題?わからない。 Vertx のドキュメントでは、container.deployVerticle バーティクルが親クラス ローダーを使用することが示唆されています。

メイヴン:

  <dependency>
      <groupId>com.netflix.rxjava</groupId>
      <artifactId>rxjava-core</artifactId>
      <version>0.17.2</version>
  </dependency>

  <dependency>
      <groupId>com.netflix.rxjava</groupId>
      <artifactId>rxjava-groovy</artifactId>
      <version>0.17.2</version>
  </dependency>

Vert.x バージョン: 2.1M5

ありがとう

4

1 に答える 1

0

利用可能な API に注意してください。RxJava wiki には多くの関数が記述されていますが、言語アダプターに実装されていない関数もあります。これは Scala でも同じだと思いますが、Groovy でもおそらく同じです。Java の「switchOnNext」や Scala の「switch」のように、メソッドの名前が異なる場合もあります。

于 2014-06-28T12:00:59.197 に答える