Kotlin con stack RxKotlinFX da un error de class de acceso

Cuando estoy usando las siguientes dependencies en mi file pom:

<properties> <rxkotlinfx.version>2.2.0</rxkotlinfx.version> <rxkotlin.version>2.1.0</rxkotlin.version> <kotlin.version>1.1.51</kotlin.version> <tornadofx.version>1.7.12</tornadofx.version> </properties> <dependencies> <dependency> <groupId>com.github.thomasnield</groupId> <artifactId>rxkotlinfx</artifactId> <version>${rxkotlinfx.version}</version> </dependency> <dependency> <groupId>io.reactivex.rxjava2</groupId> <artifactId>rxkotlin</artifactId> <version>${rxkotlin.version}</version> </dependency> <dependency> <groupId>no.tornado</groupId> <artifactId>tornadofx</artifactId> <version>${tornadofx.version}</version> </dependency> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib</artifactId> <version>${kotlin.version}</version> </dependency> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-test</artifactId> <version>${kotlin.version}</version> <scope>test</scope> </dependency> </dependencies> 

Y ejecutando el siguiente código:

 fun main(args: Array<String>) { val source = listOf("A", "B", "C").toObservable() .filter { it == "B" } .subscribeBy( onNext = { println(it) } ) } 

Recibo el siguiente error:

 Error:(37, 40) Kotlin: Cannot access class 'io.reactivex.Observable'. Check your module classpath for missing or conflicting dependencies 

¿Por qué recibo este error y qué configuration de dependencies necesito para poder trabajar con esta stack?

La única solución que encontré fue hacer una dependencia explícita de:

 <dependency> <groupId>io.reactivex.rxjava2</groupId> <artifactId>rxjava</artifactId> <version>2.1.3</version> </dependency> 

io.reactivex.Observable reside en la biblioteca rxjava-2.1.3.jar , que es una dependencia transitiva provocada por 2 dependencies que usted declaró en pom.xml:

  • com.github.thomasnield: rxkotlinfx: 2.2.0

  • io.reactivex.rxjava2: rxkotlin: 2.1.0

Probé tu configuration con gradle (lo siento, me gusta más gradle que maven) y uso la command-line de gradle para ver cuál es la resolución del conflicto: aquí está el resultado:

 io.reactivex.rxjava2:rxjava:2.1.3 (conflict resolution) \--- io.reactivex.rxjava2:rxjavafx:2.2.0 \--- com.github.thomasnield:rxkotlinfx:2.2.0 \--- compileClasspath io.reactivex.rxjava2:rxjava:2.1.0 -> 2.1.3 \--- io.reactivex.rxjava2:rxkotlin:2.1.0 \--- compileClasspath io.reactivex.rxjava2:rxjavafx:2.2.0 \--- com.github.thomasnield:rxkotlinfx:2.2.0 \--- compileClasspath io.reactivex.rxjava2:rxkotlin:2.1.0 (selected by rule) \--- compileClasspath 

y resolución de conflictos gradle elegido el v 2.1.3

Sé que la gestión de dependencies en gradle es más poderosa que en maven, pero forzaría a maven a usar una versión específica de la dependencia transitiva excluyendo la versión de dependencia no deseada.

Intentaría lo siguiente:

 <dependency> <groupId>io.reactivex.rxjava2</groupId> <artifactId>rxkotlin</artifactId> <version>${rxkotlin.version}</version> <exclusions> <exclusion> <groupId>io.reactivex.rxjava2</groupId> <artifactId>rxjava</artifactId> </exclusion> </exclusions> </dependency> 

O, en caso de que no necesite una API de él, puede eliminar el

  <dependency> <groupId>com.github.thomasnield</groupId> <artifactId>rxkotlinfx</artifactId> <version>${rxkotlinfx.version}</version> </dependency> 
  • OnComplete nunca se llamó con toSortedList () y groupBy ()
  • ¿Puedo crear un método de extensión Kotlin para agregar una suscripción rxJava a una suscripción compuesta?
  • RxKotlin flattenAsObservable (): no coincide con el método de reference
  • Excepción causada por: java.lang.ClassNotFoundException: org.reactivestreams.Publisher
  • RxJava (Kotlin), Observable.amb y PublishSubject no están disparando
  • RxKotlin - matriz de observadores dynamics
  • ¿Cómo puedo agregar de manera condicional una operación asincrónica en medio de una transmisión de RxJava?
  • RxKotlin collectInto () MutableList usando references de método
  • RxKotlin - Single.just () no se emite al suscribirse TestSubscriber
  • Múltiples requestes de modificación2 usando Flowable en Kotlin
  • ¿Cómo hacer un grupo? ¿Por qué coleccionar usando RxJava y Kotlin?