Android studio Kotlin编译器生成错误使用-jvm目标1.8重新编译
我正在处理以下问题中描述的相同错误,但提出的所有解决方案都没有解决我的问题 就我而言,有一点不同。我使用的是Android Studio 3.5,最近我将Kotlin版本升级为1.3.61。最初,我收到了常见的错误消息:Android studio Kotlin编译器生成错误使用-jvm目标1.8重新编译,android-studio,kotlin,Android Studio,Kotlin,我正在处理以下问题中描述的相同错误,但提出的所有解决方案都没有解决我的问题 就我而言,有一点不同。我使用的是Android Studio 3.5,最近我将Kotlin版本升级为1.3.61。最初,我收到了常见的错误消息: calls to static methods in Java interfaces are prohibited in JVM target 1.6. Recompile with '-jvm-target 1.8' 我更改了文件->设置->Kotlin编译器->目标
calls to static methods in Java interfaces are prohibited in JVM target 1.6. Recompile with '-jvm-target 1.8'
我更改了文件->设置->Kotlin编译器->目标JVM版本,在此更改后,它编译时没有出现错误,但后来当我尝试在模拟器上部署时,构建再次失败。因此,当它构建应用程序时,它可以工作,当它进行完整构建以部署时,它会失败,但理论上它们使用的是相同的配置。当我在渐变窗口中单击设置时,无论选择哪个节点,它都会打开主设置的相同窗口。有什么区别?
我检查了所有可能的设置和配置,还检查了项目结构和构建/运行/调试模板,但找不到其他可以设置属性的地方。
我试图在gradle构建中设置JvmTarget,但在这个Kotlin版本中,该属性不再存在。我考虑了一个下载问题,并将mavenCentral添加到存储库中,但没有任何改变。如果最近更改了某些内容,则此页面似乎不是最新的:
我还能试什么?为什么只有完整构建失败
更新:
目前,我通过添加非静态方法来解决这个问题,但这将在性能方面产生成本。所以我希望解决方案迟早会出现。与此同时,我正在添加构建文件,尽管我认为它不会给问题的描述增加太多内容:
//Originally the plugins were declared with the syntax "apply plugin ...."
//Changing to this form did not change the result
plugins {
id('com.android.application')
id('org.jetbrains.kotlin.android')
id('org.jetbrains.kotlin.android.extensions')
}
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId ..........
minSdkVersion 23
targetSdkVersion 29
versionCode 1
versionName "1.0"
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
// Commented out because the property JvmTarget is not found with Kotlin 1.3.61
// compileReleaseKotlin {
// JvmTarget='1.8'
// }
// compileDebugKotlin {
// JvmTarget='1.8'
// }
lintOptions {
abortOnError false
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
//I tried also JDK 7
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.core:core-ktx:1.0.2'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
//Follow other dependencies which are irrelevant
// ...
}
更新
Kotlin插件的最新版本允许您将kotlinOptions
放入android
块中。用Kotlin 1.4.20和Gradle 6.7对此进行了测试
android {
// ...
kotlinOptions {
jvmTarget = "1.8"
}
}
原始答案
将其放置在android
块之外的build.gradle
文件中:
Gradle
compileKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}
Gradle KTS
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
kotlinOptions {
jvmTarget = "1.8"
}
}
tasks.withType{
科特洛普斯酒店{
jvmTarget=“1.8”
}
}
注意
jvmTarget
中的小j
,并且没有变量名称-这将适用于所有构建变量。确保正确设置jvmTarget:
就来源而言,它将是:
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
对于测试,它将是:
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
你能分享你的构建文件吗?如果我没记错的话,您还可以直接用字符串(“1.8”)指定版本