[kotlin] Android Studio에서 빌드 할 때 ‘해결 실패 : org.jetbrains.kotlin : kotlin-stdlib-jre7…’오류를 해결하는 방법

Android Studio 3에서 “include kotlin”상자를 선택하여 새 프로젝트를 만들었으며 상자 밖에서 컴파일하는 동안 오류가 발생합니다.

"Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7..."

모든 플러그인이 최신 상태이고 Android SDK가 제대로 설치되었는지 확인했습니다.

이 오류를 어떻게 해결할 수 있습니까?



답변

kotlin-stdlib-jre[7/8]오래 전에 사용되지 않으며 이후 제거되었습니다. 지원 중단 메모는 해당 아티팩트를 릴리스 한 마지막 버전 인 1.2.71 까지 보관 되었습니다. 공식 지원 중단 알림은 여기에서 확인할 수 있습니다 . 제거되기 전의 지원 중단 된 버전을 사용하면 (적어도) Android Studio 및 IntelliJ에서 경고가 생성됩니다.

kotlin-stdlib-jdk7대신 사용하십시오 . kotlin-stdlib-jre7(최신 제외) 와 동일한 종속성 이지만 이름이 kotlin-stdlib-jdk. kotlin-stdlib-jre이제 더 이상 별도의 종속성으로 유지되지 않습니다.

IntelliJ와 Android Studio는 모두 현재 kotlin-stdlib-jre7; 이것은 버그 일 가능성이 있습니다. 그들은 아마도 프로젝트 생성기를 업데이트하지 않았을 것입니다. 따라서이 문제를 해결할 때까지 종속성을 작동중인 종속성으로 수동으로 바꿔야합니다. 이것은 Kotlin 플러그인에 따라 다릅니다. 업데이트하지 않은 경우 업데이트하십시오. 나는 그것이 패치되었는지 여부를 확인하지 않았습니다. 패치가 있다면 새로운 프로젝트의 생성을 수정합니다. 이전 버전에서 업데이트하는 경우 나머지 답변은 계속 적용됩니다.

1.2.71 이하이고 1.3.0 이상으로 업그레이드하는 경우 당연히이 작업을 수행해야합니다.

다음은 Kotlin 1.3.0의 새로운 유효한 종속성입니다.

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

여기서 $kotlinVersion버전을 포함하는 변수, 또는 하드 코딩 된 버전 중 어느 하나이고 (즉, 1.3.0)


또는 JDK 특정 버전 대신 “일반”stdlib ( kotlin-stdlib)를 사용할 수 있습니다 . 하지만 어느 쪽이든 종속성을 변경해야하므로를 사용하는 것이 좋습니다 kotlin-stdlib-jdk7. 또는 Java 8을 사용할 계획이라면kotlin-stdlib-jdk8

최신 버전의 종속성도 여기 에서 찾을 수 있습니다 . jdk7, jdk8 및 버전 비 특정 stdlib는 모두 동일한 버전을 따릅니다 (이 편집에 따라-이는 향후 변경 될 수 있지만 변경이 발생하기 전에 알림이있을 가능성이 있음). 따라서 jdk8, jdk7 또는 일반 버전, 모든 버전은 stdlib 아티팩트에서 보편적으로 사용할 수 있어야합니다.

다른 빌드 시스템에 대한 참고 사항

동일한 실제 솔루션이 다른 빌드 시스템에도 적용되지만 코드는 다릅니다. 빌드 시스템이 많기 때문에 모두 포함하지는 않겠지 만 요점은 아티팩트를에서 kotlin-stdlib-jre[num]로 변경하는 것 kotlin-stdlib-jdk[num]입니다 (물론 괄호없이). 또는 앞서 언급했듯이 kotlin-stdlib.

빌드 시스템과는 별도로 이는 Maven Central 및 유사한 저장소에 대한 액세스를 기반으로합니다. 빌드 시스템이이를 지원하지 않거나 Maven 스타일 규칙 및 리포지토리를 위반하는 경우 빌드 시스템에 적합한 것을 찾아야합니다.

TL; DR :

대신 org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version또는 org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version(원래 사용한 버전에 따라)을 사용하십시오.


답변

build.gradle에서 다음 행을 제거하십시오.

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

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

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

프로젝트 수준에서 build.gradle 버전 업데이트 : kotlin version = ‘1.3.0’


답변

에서 build.gradle ( 모듈 : 응용 프로그램 ) 교체

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

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

과의 build.gradle ( 모듈 : 프로젝트 ) 변경 버전

ext.kotlin_version = '1.3.0'


답변


답변