Kotlin 编译器构建错误 使用 -jvm-target 1.8 重新编译

     2023-04-15     58

关键词:

【中文标题】Kotlin 编译器构建错误 使用 -jvm-target 1.8 重新编译【英文标题】:Kotlin compiler build error Recompile with -jvm-target 1.8 【发布时间】:2020-04-17 19:09:12 【问题描述】:

我正在处理以下问题中描述的相同错误,但提出的所有解决方案都没有解决我的问题。

Why kotlin gradle plugin cannot build with 1.8 target?

Android Studio throws build error in Kotlin project which calls static method in java interface

Intellij refuses to set the Kotlin target jvm to 1.8?

在我的情况下有一个小的区别。我正在使用 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 编译器 -> 目标 JVM 版本 并在此更改后编译没有错误,但后来当我尝试在模拟器上部署时,构建再次失败。因此,当它构建应用程序时它可以工作,当它进行完整构建以部署它时,它会失败,但理论上它们使用相同的配置。当我在 gradle 窗口中单击设置时,无论选择哪个节点,它都会打开主设置的同一窗口。有什么区别? 我检查了所有可能的设置和配置,我还检查了项目结构和构建/运行/调试模板,但我找不到其他可以设置属性的地方。 我试图在 gradle 构建 JvmTarget 中设置,但是对于这个 Kotlin 版本,该属性不再存在。我考虑了一个下载问题,并将 mavenCentral 添加到存储库中,但没有任何改变。如果最近发生了一些变化,这个页面似乎不是最新的: https://kotlinlang.org/docs/reference/using-gradle.html 我还能尝试什么?为什么只有完整构建失败?

更新:

目前我通过添加非静态方法来解决这个问题,但它会在性能方面付出代价。所以我希望解决方案迟早会出现。同时我正在添加构建文件,虽然我认为它不会为问题的描述添加很多内容:

//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
    // ...

【问题讨论】:

你能分享你的构建文件吗?如果我没记错的话,你也可以直接用字符串指定版本(“1.8”) 【参考方案1】:

更新

最新版本的 Kotlin 插件允许您将 kotlinOptions 放入 android 块中。使用 Kotlin 1.4.20 和 Gradle 6.7 对此进行了测试。

android 
    // ...

    kotlinOptions 
        jvmTarget = "1.8"
    

原答案

将其放在 android 块之外的 build.gradle 文件中:

分级
compileKotlin 
    kotlinOptions 
        jvmTarget = "1.8"
    

Gradle KTS
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> 
    kotlinOptions 
        jvmTarget = "1.8"
    

注意jvmTarget 中的小j 和缺少变体名称 - 这将适用于所有构建变体。

【讨论】:

【参考方案2】:

确保您正确设置了 jvmTarget:

对于来源,它将是:

compileKotlin 
    kotlinOptions.jvmTarget = "1.8"

为了测试,应该是:

compileTestKotlin 
    kotlinOptions.jvmTarget = "1.8"

【讨论】:

使用kotlinsymbolprocessing1.0缩短kotlin构建时间

...xiangChenKotlinSymbolProcessing(KSP)——用于在Kotlin中构建轻量级编译器插件的全新工具现已推出稳定版本!其与Kotlin注释处理工具(KAPT)的功能相似,但速度提高了2倍,同时还可以直接访问Kotlin语言结构并支持多个平台目标... 查看详情

使用 Jenkins 构建 APK 时出现 kotlin.KotlinNullPointerException(无错误消息)

】使用Jenkins构建APK时出现kotlin.KotlinNullPointerException(无错误消息)【英文标题】:kotlin.KotlinNullPointerException(noerrormessage)whilebuildingAPKusingJenkins【发布时间】:2020-04-1522:20:13【问题描述】:我是Jenkins的新手,正在尝试生成APK。我... 查看详情

运行应用程序使用 Kotlin 构建失败 AAPT:错误:找不到资源 android:attr/lStar

】运行应用程序使用Kotlin构建失败AAPT:错误:找不到资源android:attr/lStar【英文标题】:RunappuseKotlinbuildfailedAAPT:error:resourceandroid:attr/lStarnotfound【发布时间】:2021-12-1516:30:29【问题描述】:我正在编写Kotlin的android应用程序。当运... 查看详情

kotlin错误thearchive:/helloworld/kotlin_binwhichisreferencedbytheclasspath,doesnote

用eclipse运行kotlin报错:Thearchive:/HelloWorld/kotlin_binwhichisreferencedbytheclasspath,doesnotexist.怎么解决,什么意思?参考技术A可能环境没配置好吧,开发kotlin不建议使用eclipse,没有语法提示,使用idea吧本回答被提问者和网友采纳 参考技... 查看详情

如何避免“附加到使用 kotlin/native 编译器编译的项目的库”错误?

】如何避免“附加到使用kotlin/native编译器编译的项目的库”错误?【英文标题】:Howtoavoid"librariesattachedtoprojectthatwerecompiledwithkotlin/nativecompiler"error?【发布时间】:2021-06-2007:48:02【问题描述】:我正在处理一个KotlinMultiplat... 查看详情

无法从 Java 源使用最新的 gradle 构建工具 (3.6.3) 生成 APK,错误引用 Kotlin

...从Java源使用最新的gradle构建工具(3.6.3)生成APK,错误引用Kotlin【英文标题】:UnabletogenerateAPKwithlatestgradlebuildtools(3.6.3)fromJavaSource,errorreferencesKotlin【发布时间】:2020-08-3000:06:28【问题描述】:当我的***build.gradle包含以下内容时,我... 查看详情

Kotlin 编译库失败

】Kotlin编译库失败【英文标题】:Kotlinfailstocompilealibrary【发布时间】:2018-08-2604:56:53【问题描述】:我创建了this库,用于通过电子邮件报告异常。它适用于AndroidJava项目,但不适用于AndroidKotlin。当我为库(compile\'com.theah64.bugmailer... 查看详情

Android studio,构建kotlin时出现奇怪错误:生成错误代码

】Androidstudio,构建kotlin时出现奇怪错误:生成错误代码【英文标题】:Androidstudio,strangeerrorwhilebuildingkotlin:wrongcodegenerated【发布时间】:2018-12-3007:25:27【问题描述】:我尝试了几天来构建我的android项目(主要包含kotlin)...我尝试... 查看详情

Kotlin 在使用 maven 时没有从 src/main/kotlin 编译

...singmaven【发布时间】:2017-10-2006:06:44【问题描述】:kotlin编译器似乎只尝试编译src/main/java中的.kt文件,而忽略了src/main/kotlin。但是,一切似乎都在IntelliJIDE中正确链接。没有错误。以下是 查看详情

用于 kotlin 代码的 gradle 构建

】用于kotlin代码的gradle构建【英文标题】:gradlebuildforkotlincode【发布时间】:2018-05-2223:44:55【问题描述】:我正在尝试建立一个使用Gradle构建Kotlin代码的项目。我已按照说明here设置build.gradle文件,但收到错误消息buildscriptrepositor... 查看详情

如何使用 kotlin dsl Gradle 将编译器参数传递给 java Compiler

】如何使用kotlindslGradle将编译器参数传递给javaCompiler【英文标题】:HowtopasscompilerargumentstojavaCompilerwithkotlindslGradle【发布时间】:2021-09-1805:42:28【问题描述】:我想为我的gradle构建任务向java编译器添加参数--add-exportsjava.rmi/sun.rmi.... 查看详情

Android Kotlin:错误未解决参考:DaggerAppComponent

...。在安装Kotlin之前,我对Dagger没有任何问题。但是,现在编译器抱怨:Error:(5,32)U 查看详情

在 Cocoapod 中导入 Kotlin/Native 框架

】在Cocoapod中导入Kotlin/Native框架【英文标题】:ImportKotlin/NativeframeworkinCocoapod【发布时间】:2018-08-0715:19:12【问题描述】:我正在尝试在私有CocoaPod中添加使用Kotlin/Native构建的供应商框架,但出现错误:我已经使用Kotlin/Native生成... 查看详情

Kotlin 注释处理器在将 Room 与 A​​ndroid Studio 3.0 beta7 一起使用时出现编译时错误

】Kotlin注释处理器在将Room与A​​ndroidStudio3.0beta7一起使用时出现编译时错误【英文标题】:KotlinannotationprocessorgivescompiletimeerrorwhileusingRoomwithAndroidStudio3.0beta7【发布时间】:2018-03-1800:04:11【问题描述】:我正在使用AndroidStudio3.0Bet... 查看详情

kotlin移除编译器警告(代码片段)

...的类,他们标注了experimental的注解,所以在使用的时候,会被编译器提示错误,需要增加@注解,才可以编译通过,如果一处使用,添加一个注解,还可以.但如果很多地方使用到了experimental的API的话,不想在每个地方都添加注解的话,则可... 查看详情

kotlin移除编译器警告(代码片段)

...的类,他们标注了experimental的注解,所以在使用的时候,会被编译器提示错误,需要增加@注解,才可以编译通过,如果一处使用,添加一个注解,还可以.但如果很多地方使用到了experimental的API的话,不想在每个地方都添加注解的话,则可... 查看详情

使用 kotlin-maven-plugin 构建的 jar 中的 Kotlin 类

】使用kotlin-maven-plugin构建的jar中的Kotlin类【英文标题】:UsingKotlinclassesfromjarbuiltwithkotlin-maven-plugin【发布时间】:2018-07-0406:49:48【问题描述】:我使用kotlin-maven-plugin(v1.2.21)构建了一个Java/Kotlin混合库。该库实际上是一个SpringBoot... 查看详情

如何启动 2.4.0 和 kotlin 1.4.20

】如何启动2.4.0和kotlin1.4.20【英文标题】:Howtospring-boot2.4.0andkotlin1.4.20【发布时间】:2021-03-1800:09:05【问题描述】:我正在尝试构建一个spring-boot微服务。该构建使用的是spring-boot的releasee2.4.0。我正在尝试使用新版本1.4.20的kotlin... 查看详情