kotlin.jvm.KotlinReflectionNotSupportedError: Không tìm thấy triển khai phản chiếu Kotlin trong thời gian chạy. Đảm bảo rằng bạn có kotlin-phản xạ.jar


82

Khi tôi biên dịch, tôi gặp lỗi ở trên. Tệp gradle của tôi như dưới đây: -

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()
}

Và điểm dự án của tôi như bên dưới

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
}

Tôi có bỏ lỡ thêm gì không?

Câu trả lời:


155

Từ lỗi, tôi giả sử:

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

của bạn dependenciesngoài thư viện tiêu chuẩn.


2
Cảm ơn! Tìm thấy chúng tôi cần compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" testCompile "org.jetbrains.kotlin:kotlin-test:$kotlin_version"theo kotlinlang.org/docs/reference/using-gradle.html
Elye

Có lẽ không rõ ràng: (1) phải là dấu ngoặc kép, không phải đơn lẻ, nếu không $ kotlin_version sẽ không mở rộng, (2) theo kotlinlang.org/docs/reference/… , có thể bỏ qua: $ kotlin_version nếu nó> = 1.1 .2. Nhưng điều đó dường như đã bị phá vỡ đối với tôi ($ kotlin_version của tôi hiện là 1,2.10); thông báo lỗi cho thấy rằng nó xây dựng một url không có thật, chẳng hạn như https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect//kotlin-reflect-.jar. Vì vậy, tôi vẫn đang sử dụng công thức trong câu trả lời này.
Don Hatch

4
Đáng nói rằng implementationbây giờ chỉ thị ưa thích hơn compile: implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
kip2

có quy tắc bảo vệ nào cho sự phụ thuộc này không?
Trinity

1

Đối với tôi, vấn đề là không có các phiên bản kotlin giống nhau, tôi là mô-đun và lib của tôi nên tôi buộc họ phải sử dụng cùng một phiên bản

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

1

Tôi đã giải quyết vấn đề này bằng cách thêm nó vào build.gradle

implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.61"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.