kotlin.jvm.KotlinReflectionNotSupportedError: Die Implementierung der Kotlin-Reflektion wurde zur Laufzeit nicht gefunden. Stellen Sie sicher, dass Sie kotlin-reflekt.jar haben

82

Beim Kompilieren habe ich den obigen Fehler erhalten. Meine Gradle-Datei wie folgt: -

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

Und mein Projekt gradle wie unten

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
}

Habe ich etwas verpasst?

Elye
quelle

Antworten:

155

Aus dem Fehler gehe ich aus:

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

in Ihrer dependencieszusätzlich zur Standardbibliothek.

AndroidEx
quelle
2
Vielen Dank! Gefunden, wir brauchen compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" testCompile "org.jetbrains.kotlin:kotlin-test:$kotlin_version"gemäß in kotlinlang.org/docs/reference/using-gradle.html
Elye
Vielleicht nicht offensichtlich: (1) muss ein doppeltes Anführungszeichen sein, nicht ein einfaches, sonst wird $ kotlin_version nicht erweitert. (2) Laut kotlinlang.org/docs/reference/… kann das: $ kotlin_version weggelassen werden, wenn es> = 1.1 ist .2. Aber das scheint für mich kaputt zu sein (meine $ kotlin_version ist derzeit 1.2.10); Die Fehlermeldung zeigt an, dass eine gefälschte URL wie z https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect//kotlin-reflect-.jar. Also verwende ich immer noch das Rezept in dieser Antwort.
Don Hatch
4
Erwähnenswert ist, dass dies implementationnun die bevorzugte Richtlinie gegenüber ist compile: implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
kip2
Gibt es eine Proguard-Regel für diese Abhängigkeit?
Trinity
1

Für mich bestand das Problem darin, nicht die gleichen Versionen von Kotlin zu haben. Ich bin meine Module und meine Bibliothek, daher musste ich sie zwingen, dieselbe Version zu verwenden

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

Ich habe dies behoben, indem ich dies in build.gradle hinzugefügt habe

implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.61"
Pawan Soni
quelle