경고 : 클래스 경로의 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.