Неожиданное исключение после добавления библиотеки в проект Android (`java.lang.NoClassDefFoundError: Неудачное разрешение: Lkotlin / text / StringsKt;`) - PullRequest
0 голосов
/ 30 января 2019

Я создал пустой проект в Android Studio, и он работал нормально, как и ожидалось.Также я добавил несколько простых кодов внутри функции onCreate():

val text = "Test String"
val newText = text.replace("String", "Replaced")
println("$newText")

, что также было хорошо, и код работал.

Затем, единственное, что я сделал, я добавил Scarlet WebSocket library в мой проект, как предложено в файле README (т.е. просто добавили ссылку на репозиторий и соответствующую запись implementation в мой файл Gradle).

После этого я попытался собрать иначать проект.Сборка прошла успешно, и приложение запустилось на моем телефоне Android, но сразу же дало сбой, когда оно достигло вышеупомянутого кода (т.е. простое создание и изменение строки Kotlin), за исключением следующего:

java.lang.NoClassDefFoundError: Failed resolution of: Lkotlin/text/StringsKt;

И я не могу понять, почему я получаю эту ошибку и как ее исправить.Я имею в виду, что проект построен без каких-либо ошибок, и я ожидаю, что такие базовые вещи будут работать, более того, они работали до того, как я добавил новую зависимость, и я не могу понять, как добавление новой зависимости сломало совершенно другое место, в котором просто использовались строки Kotlin.Я могу удалить одну строку implementation 'com.github.tinder:scarlet:0.1.7' из моего скрипта gradle, и все снова начнет работать.Как дополнительная зависимость может сломать все?

Я вижу большой недостаток в использовании Android / Kotlin, что такие вещи могут происходить во время выполнения, когда тот не ожидает их, и я попытался найти ответ в Google, и этоКажется, что эта проблема довольно распространена среди тех, кто использует Kotlin на Android, но я не смог найти объяснение, почему это происходит и как предотвратить такие ошибки.

Более подробное описание (вместе с скриптами gradleкод) можно найти внутри проблемы, которую я открыл в библиотеке Github Issues of Scarlet .


NOTE. Я заметил следующие предупреждения:

w: Runtime JAR files in the classpath should have the same version. These files were found in the classpath:
    /home/developer/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.2.10/85fe1811f3e586d0cc53aba1394d8089f1862215/kotlin-stdlib-jdk8-1.2.10.jar (version 1.2)
    /home/developer/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.3.11/4839661cf6ce3c14b65ed7dcf5b9249b44ecca16/kotlin-stdlib-jdk7-1.3.11.jar (version 1.3)
    /home/developer/.gradle/caches/transforms-1/files-1.1/kotlin-reflect-1.3.0.jar/1b0308d4761482ab05da95492cd24014/jetified-kotlin-reflect-1.3.0.jar (version 1.3)
    /home/developer/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.11/4cbc5922a54376018307a731162ccaf3ef851a39/kotlin-stdlib-1.3.11.jar (version 1.3)
    /home/developer/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.3.11/d8b8e746e279f1c4f5e08bc14a96b82e6bb1de02/kotlin-stdlib-common-1.3.11.jar (version 1.3)
w: Some runtime JAR files in the classpath have an incompatible version. Consider removing them from the classpath

Не уверен, откуда взялся модуль с версией 1.2.Я также проверил репозиторий Scarlet и версию kotlin, которую они используют, я попытался применить эту версию в своем проекте (изменив $kotlin_version в моих опциях gradle), но это не решило проблему.Не уверен, может ли это предупреждение каким-либо образом быть связано с проблемой.

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