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 cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.