Я только начал конвертировать в Kotlin с Java. У меня есть вопрос: когда я отражаю что-то вроде:
XXClass::class.java
или что-нибудь еще. Они не работают в JAR , но отлично работают из IDE.
Я использую gradle :module:build
или gradle :module:jar
для создания файла JAR. После генерации он всегда говорит мне KotlinReflectionNotSupportedError: Kotlin reflection implementation is not found at runtime. Make sure you have kotlin-reflect.jar in the classpath
. Но я уже добавил их в зависимости, и они отлично работают в IDE.
Это части моих файлов Gradle (Обратите внимание, что это модуль приложения kotlin, а не модуль Android):
// (Module level)
apply plugin: 'kotlin'
sourceCompatibility = 1.8
dependencies {
// Others...
// I've already added reflect and stdlib
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
}
jar {
manifest {
// ...
}
// To include dependencies to build a fat jar
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
}
}
}
// Include reflect and stdlib
compileKotlin {
kotlinOptions {
jvmTarget = "1.8"
javaParameters = true
noReflect = false
noStdlib = false
}
}
// (Project level)
buildscript {
ext.kotlin_version = '1.3.11'
repositories {
// ...
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
Кто-нибудь может мне помочь? Большое спасибо.