Я использую внешнюю библиотеку для своего проекта, которая использует 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 по какой-то причине видна только из области проверки.