代码之家  ›  专栏  ›  技术社区  ›  Joel

无法将使用JVM目标1.8构建的字节码内联到使用JVM目标1.6构建的字节码中

  •  750
  • Joel  · 技术社区  · 8 年前

    尝试运行示例CorDapp时( GitHub CorDapp )通过IntelliJ,我收到以下错误:

    无法将使用JVM目标1.8构建的字节码内联到 正在使用JVM目标1.6构建

    如何修改IntelliJ设置,以便所有字节码都是使用相同的JVM目标构建的?

    35 回复  |  直到 6 年前
        1
  •  1522
  •   Braian Coronel    6 年前

    应用程序/内部版本。格拉德尔

    android {
        ...
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    
        kotlinOptions {
            jvmTarget = JavaVersion.VERSION_1_8.toString()
        }
    }
    

    德国劳埃德船级社

    Use Java 8 language features

        2
  •  298
  •   erluxman    7 年前

    您可以按以下方式修复此问题:

    • 打开IntelliJ首选项
    • Build, Execution, Deployment &燃气轮机; Compiler &燃气轮机; Kotlin Compiler 但是 Other Settings &燃气轮机; Kotlin compiler 如果Android Studio> 3.4
    • 更改 Target JVM version 1.8
    • 点击 Apply
        3
  •  148
  •   Amuthan    8 年前

    您应该在内部版本中进行如下配置。格拉德尔

    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
        kotlinOptions {
            jvmTarget = "1.8"
        }
    }
    
        4
  •  120
  •   D. Sergeev    6 年前

    请将此代码添加到应用程序/内部版本的android部分。格拉德尔

    compileOptions {
            sourceCompatibility = JavaVersion.VERSION_1_8
            targetCompatibility = JavaVersion.VERSION_1_8
        }
        kotlinOptions {
            jvmTarget = JavaVersion.VERSION_1_8
        }
    
        5
  •  90
  •   ZX9    6 年前

    在我的情况下,只需像这样更改目标JVM版本:File>设置(>);Kotlin编译器>目标JVM版本(>);1.8没有帮助。然而,它确实解决了编译时错误。但在运行时失败。

    我还必须添加以下应用程序内部版本。gradle文件使其工作。

     android {
         // Other code here...
         kotlinOptions {
            jvmTarget = "1.8"
         }
     }
    
        6
  •  65
  •   Orposuser    7 年前

    当其他解决方案不适合您时(在编译器设置上更改JVM版本并添加 jvmTarget 进入您的 build.gradle ),因为您 .iml 试图强制其配置的文件您可以从项目设置更改目标平台。

    • 打开 File > Project Structure
    • Facets 在下面 Project Settings
      • 如果为空,则单击小 + 按钮
    • 单击您的Kotlin模块
    • 更改 Target Platform JVM 1.8 (而且最好检查一下 Use project settings 选项)
        7
  •  60
  •   Zoe - Save the data dump 张群峰    5 年前

    在我的情况下,这个代码直到我搬家才起作用 apply plugin: 'kotlin-android' 从下到上。

    apply plugin: 'com.android.application'
    apply plugin: 'kotlin-android'
    
    android {
        ...
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    
        kotlinOptions {
            jvmTarget = "1.8"
        }
    }
    
        8
  •  34
  •   Muhammad Maqsood    7 年前

    在Android Studio 4.3.2中,通过以下过程添加不起作用。

    1. 打开IntelliJ首选项
    2. 构建、执行、部署 &燃气轮机; 编译器 &燃气轮机; Kotlin编译器 但其他设置>Android Studio中的Kotlin编译器>3.4
    3. 更改 目标JVM版本 至1.8
    4. 单击应用

    原因是,Android studio无法在模块级Gradle文件中添加以下代码。请手动添加。

    kotlinOptions {
        jvmTarget = "1.8"
    }
    

    只是为了加载项,搜索 目标JVM版本 在android studio搜索中。它将直接带您到选项。 enter image description here

        9
  •  29
  •   USMAN osman    6 年前

    2020年2月
    android 3.4+
    转到文件->设置->Kotlin编译器->目标JVM版本(>);设置为1.8,然后确保执行文件->将项目与Gradle文件同步

    或将此添加到 建筑gradle(模块:应用程序) 在里面 安卓 块:

    kotlinOptions {
               jvmTarget = "1.8"
             }
    
        10
  •  27
  •   Fabian Braun    6 年前

    如果您有许多源集/模块,那么分别为每个源集/模块配置jvmTarget可能会很麻烦。

    您可以一次为所有目标配置jvmTarget,如下所示:

    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
        kotlinOptions {
            jvmTarget = "1.8"
        }
    }
    

    这个片段可以在gradle的顶层使用。生成文件

    修改gradle文件后 Reimport All Gradle Imports . 要检查它是否工作,请打开 Project Structure 并验证IntelliJ已正确分配 JVM 1.8 至所有Kotlin模块。应该是这样的:

    project structure

    我会的 建议直接在IntelliJ中更改平台,因为任何其他第一次克隆您的项目的人都可能面临同样的问题。在gradle中正确配置它的好处是IntelliJ从一开始就可以为他们提供正确的行为。

        11
  •  24
  •   Johan Vergeer    8 年前

    正如 using-maven Kotlin网站上的文件:

    你只要把 <kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget> 进入pom的属性部分。xml

        12
  •  23
  •   Shoaib Mushtaq    6 年前

    在我的情况下,jvmTarget已经在 build.gradle 文件如下所示。

    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
        kotlinOptions {
            jvmTarget = "1.8"
        }
    }
    

    但我的问题仍然存在。 最后,在Preferences中将目标JVM版本从1.6更改为1.8后,它得到了解决>其他设置(>);Kotlin编译器>目标JVM版本。见附图,

    enter image description here

        13
  •  21
  •   Costa    5 年前

    这有助于我的项目构建,将其添加到模块构建中。gradle文件:

    compileOptions {
            sourceCompatibility 1.8
            targetCompatibility 1.8
        }
        tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
            kotlinOptions {
                jvmTarget = "1.8"
            }
        }
    
        14
  •  17
  •   AdrianoCelentano    7 年前

    对我来说,原因是我的构建中的这种配置gradle在某些模块中,而在某些模块中则不是

    android {  
    ...      
    kotlinOptions {
            val options = this as KotlinJvmOptions
            options.jvmTarget = "1.8"
        }
    ...
    android {
    
        15
  •  17
  •   Vikas Sharma    7 年前

    在我的例子中,我通过以下两个步骤解决了这个问题

    1. Go to android studio preferences -> other settings -> kotlin compiler -> set Target JVM version = 1.8 
       if it doesn't work then go to the second option.
    
    2. In your module-level build.gradle file add 
       compileOptions {
            sourceCompatibility = 1.8
            targetCompatibility = 1.8
        }
        tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
            kotlinOptions {
                jvmTarget = "1.8"
            }
        }
    
        16
  •  13
  •   Kevin Robatel    7 年前

    使用Kotlin语言的Gradle( *.gradle.kts 文件),添加以下内容:

    android {
        [...]
        kotlinOptions {
            this as KotlinJvmOptions
            jvmTarget = "1.8"
        }
    }
    
        17
  •  12
  •   Олег СухиѠ   5 年前

    下一个解决方案帮助了我。添加到生成。格拉德尔

     compileKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    
    compileTestKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    
        18
  •  9
  •   naXa stands with Ukraine    6 年前

    在大多数情况下,这就足够了:

    compileKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    compileTestKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    

    如果您已声明自定义渐变任务,如 integrationTest 例如,为添加配置 compile<YourTaskName>Kotlin 也:

    compileIntegrationTestKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    
        19
  •  7
  •   mattie    6 年前

    这里的所有答案都使用gradle,但如果像我这样的人最终来到这里,需要maven的答案:

        <build>
            <sourceDirectory>src/main/kotlin</sourceDirectory>
            <testSourceDirectory>src/test/kotlin</testSourceDirectory>
    
            <plugins>
                <plugin>
                    <groupId>org.jetbrains.kotlin</groupId>
                    <artifactId>kotlin-maven-plugin</artifactId>
                    <version>${kotlin.version}</version>
                    <executions>
                        <execution>
                            <id>compile</id>
                            <phase>compile</phase>
                            <goals>
                                <goal>compile</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>test-compile</id>
                            <phase>test-compile</phase>
                            <goals>
                                <goal>test-compile</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <jvmTarget>11</jvmTarget>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    

    kotlin jvm的jetbrains原型的变化是 <configuration></configuration> 指定jvmTarget。就我而言11

        20
  •  7
  •   Anoop M Maddasseri    6 年前

    背景 sourceCompatibility = JavaVersion.VERSION_1_8 启用desugaring,但目前无法对Kotlin编译器使用的所有Java 8功能进行desugar。

    enter image description here

    修复-设置 kotlinOptions.jvmTarget to JavaVersion.VERSION_1_8 在应用程序模块中,Gradle将修复该问题。

    使用Java 8语言功能: https://developer.android.com/studio/write/java8-support

    android {
      ...
      // Configure only for each module that uses Java 8
      // language features (either in its source code or
      // through dependencies).
      compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
      }
      // For Kotlin projects
      kotlinOptions {
        jvmTarget = "1.8"
      }
    }
    
        21
  •  7
  •   kigawas    6 年前

    您可能需要同时设置 compileKotlin compileTestKotlin . 这适用于gradle 6.5.1。

    compileKotlin {
        kotlinOptions {
            languageVersion = "1.2"
            apiVersion = "1.2"
            jvmTarget = "1.8"
            javaParameters = true   // Useful for reflection.
        }
    }
    
    compileTestKotlin {
        kotlinOptions {
            languageVersion = "1.2"
            apiVersion = "1.2"
            jvmTarget = "1.8"
            javaParameters = true   // Useful for reflection.
        }
    }
    
        22
  •  6
  •   ironman    6 年前

    如果你在android项目中

    在应用程序的内部版本中。格拉德尔 在android{}下

    android{
    //other configs...
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            }
        }
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
        kotlinOptions {
            jvmTarget = "1.8"
        }
    }
    
        23
  •  6
  •   Amin Bahiraee    5 年前

    如果以上答案都不起作用,您可以在kotlin dsl中执行此操作

    android {
    ...
    
        tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
            kotlinOptions {
                jvmTarget = "1.8"
            }
        }
    }
    
        24
  •  5
  •   Peter V. Mørch    6 年前

    我正在使用Kotlin和Gradle进行正常的JVM开发(不是android),这在 build.gradle :

    allprojects {
        tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
            kotlinOptions.jvmTarget = JavaVersion.VERSION_11.toString()
        }
    }
    
        25
  •  5
  •   Vadik Sirekanyan alb.noah    5 年前

    我做了所有步骤,但没有成功问题是

    implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.4.32'
    

    当我更新到

    implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.5.30'
    

    当我回到

    实施组织。喷气式飞机。kotlin:kotlin stdlib:1.4.32'
    

    问题已修复

        26
  •  4
  •   Hinotori    7 年前

    如果使用Visual Studio代码**和Kotlin扩展,请转到插件管理Crtl+Shift+x,键入Kotlin并单击管理(小齿轮)>&燃气轮机;配置扩展设置

    关于Kotlin>&燃气轮机;编译器(>)&燃气轮机;Jvm:目标-键入java版本。在我的情况下,只需键入1.8

    然后重新启动:-)

    **vscode或linux的“代码”

        27
  •  4
  •   Waldmann AphexMunky    6 年前

    直到我更新了我的kotlin插件依赖关系,我才开始工作。
    尝试以下操作:
    1、cahce失效,重启。
    2、同步项目(至少尝试)
    3、开始 文件 -&燃气轮机; 项目结构 -&燃气轮机; 建议
    4、如果有关于Kotlin的更新,请更新。
    希望它能帮助别人。

        28
  •  4
  •   Briantical    6 年前

    使用Kotlin Gradle DSL,这为我解决了这个问题。我将此添加到构建中。格拉德尔。kts。 这是对 Joel

    val compileKotlin: KotlinCompile by tasks
    compileKotlin.kotlinOptions.jvmTarget = JavaVersion.VERSION_1_8.toString()
    
        29
  •  2
  •   Invest    7 年前

    如果使用Eclipse,假设您下载了Kotlin插件:

    右键单击项目->属性->Kotlin编译器->启用特定于项目的设置->JVM目标版本“1.8”

        30
  •  2
  •   Bills    7 年前

    就我而言 文件(>);设置(>);Kotlin编译器>目标JVM版本(>);1.8

    推荐文章