uyarı: Sınıf yolundaki Kotlin çalışma zamanı JAR dosyaları aynı sürüme sahip olmalıdır


91

Aşağıdaki uyarıyı alıyorum, ancak v1.0.6'nın nerede bulunduğundan emin değilim.

Bu hatanın, bir şekilde eski bir Kotlin sürümünü içeren bir Kotlin kitaplığından gelmesi mümkün mü?

Nasıl düzeltileceğine dair herhangi bir fikriniz var mı veya en azından kotlin-yansıtmayı açık (1.1) yapmak için öneriyi nasıl takip edebilirim?

görüntü açıklamasını buraya girin

Yanıtlar:


100

Görünüşe göre projeniz kotlin-stdlib1.1 ve kotlin-reflect1.0'a bağlı olacak şekilde yapılandırılmış . En olası durum, halihazırda kotlin-stdlib1.1'e açık bir bağımlılığınız olduğu, ancak buna bağımlılığınızın olmadığı kotlin-reflectve diğer bazı kitaplıkların (bağlı olduğunuz) kotlin-reflect1.0'a bağlı olmasıdır .

Durum gerçekten buysa, çözüm kotlin-reflect1.1'e açık bir bağımlılık sağlamaktır .

Maven'de şunu ekleyin pom.xml:

    <dependencies>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-reflect</artifactId>
            <version>1.1.0</version>
        </dependency>
    </dependencies>

Gradle'da şunu ekleyin build.gradle:

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-reflect:1.1.0"
}

Resmi belgelerde bununla ilgili bazı bilgilere ve ilgili uyarılara bakın .


1.1.1'e yükselttiğimde ne olur? Bu 1.1.0 yeni bağımlılık nedeniyle tekrar uyarı alacak mıyım?
ycomp

4
Hayır, uyarı yalnızca büyük / küçük sürümler eşleşmediğinde vardır. Yama sürümü güncellemelerini birbirimizle tamamen uyumlu
tutuyoruz

28

Uygulamamda kullanılan kotlin sürümünün üzerine yazarak uyarıyı düzelttim

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'org.jetbrains.kotlin' && requested.name == 'kotlin-reflect') {
            details.useVersion kotlin_version
        }
    }
}

Örneğin kotlin_version = 1.3.0


Bunu ekledim ama yine de aynı hatayı alıyorum. Beni deli ediyor adamım ...
Joseph Wambura

1
@GithithuWambura içinde Gerilmesiz uygulama build.gradle doğrudan koydu android {}örn
Vlad

11

ilk olarak, aşağıdaki gradle komut dosyasıyla nedenini bulun

./gradlew app:dependencies

( appgradle modül adınızı değiştirin )

+--- project :common
|    +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.61
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61
|    |    \--- org.jetbrains:annotations:13.0
|    +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.3
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61
|    +--- org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:0.12.0 -> 0.14.0
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.60 -> 1.3.61

Daha sonra bağımlılık ağacı gösterilecektir. hangi bağımlılığın sorun bağımlılığını kullandığını kontrol edin.

Bağımlılığı bulduysanız, nasıl çözeceğinize karar verin.

  1. bağımlılığın sürümünü yükseltin (bağımlılığın en son sürümü, bağımlılığın en son sürümüne atıfta bulunabilir)
  2. veya sorun bağımlılığını bağımlılıktan hariç tutun
  3. veya diğer cevapları takip edin.

En iyi yolun ne olduğundan emin değilim. nazikçe sadece bakın.


5

bir kotlin projesinde (android) hançeri kullandığınızda ve kotlin sürümünün 1.7 yani

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

Yapmanız gereken tek şey, aşağıdaki bağımlılığı uygulama geliştirme aşamalı seviyenize eklemek

  implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.50"

2

Uyarılardan kaçınmak için aynı stdlib-jdk7& kotlin-gradle-pluginbağımlılıkları sürümünü kullandığınızdan emin olun .
Nerede Örneğin aşağıda refere edebilir stdlib-jdk7ve kotlin-gradle-pluginher ikisi de aynı sürüme sahip

uygulama düzeyinde build.gradle dosyası

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.0"
    ...
}

proje düzeyinde build.gradle dosyası

buildscript {
    dependencies {
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.0" 
         ...
    }

}

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.