경고 : 클래스 경로의 Kotlin 런타임 JAR 파일은 동일한 버전이어야합니다.


83

다음 경고가 표시되지만 v1.0.6이 어디에 있는지 잘 모르겠습니다.

이 오류가 이전 Kotlin 버전을 포함하여 어떻게 든 Kotlin 라이브러리에서 발생할 수 있습니까?

그것을 고치는 방법이나 적어도 kotlin-reflect를 명시 적으로 만드는 제안을 어떻게 따를 수 있습니까 (1.1)?

여기에 이미지 설명 입력

답변:


96

프로젝트가 kotlin-stdlib1.1과 kotlin-reflect1.0 에 의존하는 방식으로 구성된 것 같습니다 . 가장 가능성이 높은 경우는 이미 kotlin-stdlib1.1 에 대한 명시 적 종속성이 있지만에 대한 종속성이 없으며 kotlin-reflect일부 다른 라이브러리 (사용자가 의존하는)가 kotlin-reflect1.0에 의존하는 것 입니다.

이것이 사실이라면 해결책은 kotlin-reflect1.1 에 대한 명시적인 종속성을 제공하는 것 입니다.

Maven에서 다음을 추가하십시오 pom.xml.

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

Gradle에서 다음을 추가하십시오 build.gradle.

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

공식 문서에서 이에 대한 정보 및 관련 경고 참조하십시오 .


1.1.1로 업그레이드하면 어떻게됩니까? 이 1.1.0 새 종속성으로 인해 다시 경고가 표시됩니까?
ycomp

4
아니요, 경고는 주 / 부 버전이 일치하지 않을 때만 나타납니다. 패치 버전 업데이트가 서로 완전히 호환되도록 유지하고 있습니다
Alexander Udalov 2017 년

26

내 앱에서 사용 된 kotlin 버전을 덮어 써서 경고를 수정했습니다.

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

예 : kotlin_version = 1.3.0


나는 그것을 추가했지만 여전히 같은 오류가 발생합니다. 그것은 ... 나 너트 남자를 운전
조셉 Wambura

@GithithuWambura는 android {}예를 들어 브레이스없이 app build.gradle에 직접 넣었습니다
Vlad

8

먼저 아래의 gradle 스크립트로 이유를 파악하십시오.

./gradlew app:dependencies

( appGradle 모듈 이름으로 변경 )

+--- 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

그러면 종속성 트리가 표시됩니다. 문제 종속성을 사용하는 종속성을 확인하십시오.

종속성을 찾은 경우 해결 방법을 결정하십시오.

  1. 종속성의 버전 업그레이드 (종속성의 최신 버전은 최신 문제 종속성의 버전을 참조 할 수 있음)
  2. 또는 종속성에서 문제 종속성 제외
  3. 또는 다른 답변을 따르십시오.

최선의 방법이 무엇인지 잘 모르겠습니다. 친절하게 참조하십시오.


5

kotlin 프로젝트 (안드로이드)에서 단검을 사용하고 kotlin 버전이 1.7이 될 때 발생합니다.

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

앱 빌드 gradle 레벨에 아래 종속성을 추가하기 만하면됩니다.

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

2

경고를 피하기 위해 동일한 버전의 stdlib-jdk7& kotlin-gradle-plugin종속성을 사용하는지 확인하십시오 . & 둘 다 동일한 버전을 갖는
아래 예를 참조 할 수 있습니다.stdlib-jdk7kotlin-gradle-plugin

앱 수준 build.gradle 파일

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

프로젝트 수준 build.gradle 파일

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

}


-2

나는 같은 문제에 직면했지만 Dagger 잘못된 주입 때문이었습니다.


2
StackOverflow를 사용하기 전에이 링크를 읽으십시오. stackoverflow.com/tour
Antu

2
@Antu 솔직히, 방금 Dagger 주입을 추가하고 같은 메시지를 받았 으므로이 답변에는 아무런 문제가 없습니다. 완전한 솔루션은 아니지만 어디를 볼지에 대한 포인터를 제공합니다.
Rickard Elimää
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.