在通过container.deployVerticle部署的Verticle中运行时,Observable.create会导致groovy.lang.MissingMethodException

时间:2014-04-10 18:18:50

标签: groovy vert.x rx-java

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 documentation suggests container.deployVerticle verticles将使用父类加载器。

的Maven:

  <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

由于

1 个答案:

答案 0 :(得分:0)

小心使用可用的API。在RxJava wiki中,描述了许多函数,但其​​中一些函数未在语言适配器中实现。我确信在Scala中就是这种情况,但在Groovy中可能是相同的。有时方法甚至有不同的名称,如&#34; switchOnNext&#34;用Java和&#34;切换&#34;在斯卡拉。

相关问题