kotlin.jvm.KotlinReflectionNotSupportedError : 런타임시 Kotlin 리플렉션 구현을 찾을 수 없습니다. kotlin-reflect.jar이 있는지 확인하십시오.


82

컴파일 할 때 위의 오류가 발생했습니다. 내 gradle 파일은 다음과 같습니다.

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 23
    buildToolsVersion "24.0.0 rc2"

    defaultConfig {
        applicationId "package.name"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 6
        versionName "2.0"
    }

    buildTypes {
        debug {
            minifyEnabled false
            signingConfig signingConfigs.debug
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile "com.android.support:appcompat-v7:$support_version"
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    compile "org.jetbrains.anko:anko-sdk15:$anko_version"
    compile "org.jetbrains.anko:anko-support-v4:$anko_version"
    compile "com.android.support:recyclerview-v7:$support_version"
}

buildscript {
    ext.kotlin_version = '1.0.1-2'
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
    }
}
repositories {
    mavenCentral()
}

그리고 내 프로젝트는 아래와 같이 gradle

buildscript {
    ext.support_version = '23.2.1'
    ext.kotlin_version = '1.0.1'
    ext.anko_version = '0.8.3'
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0-alpha3'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

내가 뭔가를 추가하지 않았습니까?

답변:


155

오류에서 다음과 같이 가정합니다.

implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"

당신의 dependencies표준 라이브러리에 추가.


2
감사! 우리는 필요 발견 compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" testCompile "org.jetbrains.kotlin:kotlin-test:$kotlin_version"에 따라 kotlinlang.org/docs/reference/using-gradle.html
Elye

분명하지 않을 수도 있습니다. (1) 작은 따옴표가 아니라 큰 따옴표 여야합니다. 그렇지 않으면 $ kotlin_version이 확장되지 않습니다. (2) kotlinlang.org/docs/reference/… 에 따르면 , : $ kotlin_version이> = 1.1이면 생략 할 수 있습니다. .2. 그러나 그것은 나를 위해 깨진 것 같습니다 (내 $ kotlin_version은 현재 1.2.10입니다). 오류 메시지는 https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect//kotlin-reflect-.jar. 그래서 나는이 답변에서 여전히 레시피를 사용하고 있습니다.
Don Hatch

4
그것은 implementation지금보다 선호되는 지시문 이라고 언급 할 가치 가 있습니다 compile: implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
kip2

이 종속성에 대한 proguard 규칙이 있습니까?
Trinity

1

나에게 문제는 동일한 버전의 kotlin이 없었습니다. 나는 내 모듈과 lib이므로 동일한 버전을 사용하도록 강요해야했습니다.

configurations.all {
    resolutionStrategy {
        eachDependency { DependencyResolveDetails details ->
            if (details.requested.group == 'org.jetbrains.kotlin') {
                details.useVersion versions.kotlin
            }
        }
    }}

1

이 문제를 build.gradle에 추가하여 해결했습니다.

implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.61"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.