Ошибка: невозможно получить доступ к 'io.reactivex.SingleSource', который является супертипом 'io.reactivex.Single' - PullRequest
0 голосов
/ 13 июля 2020

Я использую внешнюю библиотеку для своего проекта, которая использует Rx Java в своем API. Проект написан на kotlin (как и библиотека) с использованием Intellij Idea IDE и Gradle в качестве инструмента сборки.

Вот build.gradle.kts:

plugins {
    java
    kotlin("jvm") version "1.3.72"
    kotlin("kapt") version "1.3.72"
}

version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()

    maven {
        url = uri("https://jitpack.io")
    }
}

dependencies {
    implementation(kotlin("stdlib-jdk8"))

    //wulkanowy sdk
    implementation("io.github.wulkanowy:sdk:0.19.0")


    //coroutines
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7")

    //dagger
    val daggerVersion = "2.28.1"
    implementation("com.google.dagger:dagger:$daggerVersion")
    annotationProcessor("com.google.dagger:dagger-compiler:$daggerVersion")
    kapt("com.google.dagger:dagger-compiler:$daggerVersion")
    kaptTest("com.google.dagger:dagger-compiler:$daggerVersion")


    //db
    implementation("org.mariadb.jdbc:mariadb-java-client:2.6.1")

    //tests
    testImplementation("org.junit.jupiter:junit-jupiter-api:5.6.2")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.6.2")
}

configure<JavaPluginConvention> {
    sourceCompatibility = JavaVersion.VERSION_1_8
}
tasks {
    compileKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    compileTestKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
}

tasks.test {
    useJUnitPlatform()
}

Зависимость Rx Java разрешена правильно и отображается в разделе «Внешние библиотеки» в дереве проекта.

При попытке использовать Rx Java через api:

package data.repositories.grade

import data.db.entities.Grade
import data.db.entities.Student
import io.github.wulkanowy.sdk.Sdk
import io.github.wulkanowy.sdk.pojo.Semester
import util.init
import javax.inject.Inject

class GradeRemote @Inject constructor(val sdk: Sdk, val student: Student) {

    fun getGrades(student: Student, semester: Semester): List<Grade> {
        val (details, summary) = sdk
            .init(student)
            .switchDiary(semester.diaryId, semester.schoolYear)
            .getGrades(semester.semesterId) //returns Single<Pair<>>
            .blockingGet()
    }
}

I получить следующую ошибку времени компиляции при вызове blockingGet (): Невозможно получить доступ к 'io.reactivex.SingleSource', который является супертипом 'io.reactivex.Single'. Проверьте путь к классам вашего модуля на предмет отсутствующих или конфликтующих зависимостей.

Что я пробовал:

Импорт класса вручную. Недействительный кеш и перезапуск (Intellij Idea) Цикл между компиляцией, реализацией и api в зависимости gradle для библиотека Добавить Rx Java как отдельную зависимость Gradle (Rx Java работает нормально, но ошибка сохраняется) Вручную добавьте Rx Java, предоставленный в качестве зависимости для библиотеки, в мой модуль в структуре проекта.

EDIT :

Я понял, что подчиненная зависимость Rx Java по какой-то причине видна только из области проверки.

...