Как разрешить конфликты зависимости gradle на зависимости библиотеки root? - PullRequest
0 голосов
/ 24 апреля 2020

В моем проекте у меня есть две зависимости с okio как конфликт транзитивной зависимости. Теоретически, gradle должен решить эту проблему, выбрав самую высокую версию, но это не сработало.

Я пробовал все, начиная с исключения до принудительного запуска версии из okio lib, но ничего не работает. Глядя на путь внешних библиотек, я понял, что одна из зависимостей содержит okio как путь зависимости, и я считаю, что это проблема. Но как я могу решить это?

Это простой пример с моими двумя зависимостями. Комментированные строки - мои неудачные попытки решить проблему:

plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.3.72'
}

repositories {
    mavenCentral()
}

//configurations.all {
//    resolutionStrategy.force('com.squareup.okio:okio:2.4.3')
//}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"

    // -> dependency one
    implementation "com.squareup.retrofit2:retrofit:2.7.2"
//    implementation ("com.squareup.retrofit2:retrofit:2.7.2"){
//        exclude group: 'com.squareup.okio'
//    }

    // -> dependency two
    implementation "com.eternitywall:java-opentimestamps:1.18"
//    implementation ("com.eternitywall:java-opentimestamps:1.18") {
//        exclude group: 'com.squareup.okio'
//    }

//    implementation "com.squareup.okio:okio:2.4.3"

//    implementation "com.squareup.okio:okio"
//    constraints {
//        implementation("com.squareup.okio:okio:2.4.3") {
//            because 'transitive version conflict'
//        }
//    }
}

Чтобы получить ошибку, просто получите файл Main.kt с кодом:

import okhttp3.OkHttpClient

fun main(args: Array<String>) {
    OkHttpClient.Builder()
}

И полученная ошибка :

Exception in thread "main" java.lang.NoSuchMethodError: 'boolean okio.ByteString.startsWith(okio.ByteString)'
    at okio.Options.of(Options.java:64)
    at okhttp3.internal.Util.<clinit>(Util.java:73)
    at okhttp3.OkHttpClient.<clinit>(OkHttpClient.java:124)
    at okhttp3.OkHttpClient$Builder.<init>(OkHttpClient.java:449)
    at MainKt.main(Main.kt:4)

И, наконец, это библиотека root, которую я упомянул по зависимости с включенным okio

enter image description here

Я буду очень благодарен, если вы сможете мне помочь. Заранее спасибо !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...