ChatGPT解决这个技术问题 Extra ChatGPT

Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6

When trying to run the Example CorDapp (GitHub CorDapp) via IntelliJ, I receive the following error:

Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6

How can I modify the IntelliJ settings so that all the bytecode is built with the same JVM target?

I was able to resolve this issue by adding this library to build.gradle dependencies { compile("org.jetbrains.kotlin:kotlin-stdlib-jdk8") }
@MunishChandel That is not sufficient. We must also do what the answer below suggests...
Had the same error when specifying jvmTarget = "15" on Linux but the same project was working on Windows, both on IntelliJ 2020.3. Changed to jvmTarget = "14" and it worked on both. In either case there were no errors from the command line, only in IntelliJ.

B
Braian Coronel

app/build.gradle

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8.toString()
    }
}

GL

Use Java 8 language features


As of this date and Android Studio v3.5 this is the only solution that worked, after trying all the rest. Strangely enough setting the same value in Settings > Kotlin Compiler has no effect.
Just the kotlinOptions { jvmTarget = "1.8" } should suffice.
Then should "invalidate cache and restart"
I had already define the compileOption but not kotlinOption after define kotlinOption error gone. Its work for me. Thanks for sharing.
And what if this is not for android? Where do the compileOptions and kotlinOptions go?
e
erluxman

You can fix this issue as follows:

Open the IntelliJ preferences

Go to Build, Execution, Deployment > Compiler > Kotlin Compiler BUT Other Settings > Kotlin compiler if Android Studio > 3.4

Change the Target JVM version to 1.8

Click Apply


I have this setting fixed to 1.8 already, yet I still see this error when stepping through breakpoints. I primarily see this when hitting vault queries. Any further suggestions? It seems this target JVM bit doesn't fix it entirely.
On your Project Structure, make sure you also change the Target platform to JVM 1.8 on your Kotlin Facet under the General tab.
This error can appear if there is an unresolved dependency!
For me the Kotlin Compiler settings were actually placed in Other Settings section.
If restarting after apply is not enough → Restart & Invalidate caches.
A
Amuthan

you should configure something like as follows in build.gradle

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

Or alternatively, in the Gradle Kotlin DSL: tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> { kotlinOptions.jvmTarget = "1.8" }
Any idea how to get this to work with kotlin-android plugin?
Works without much hassle. I'd recommend it
Do add this in your app-level Gradle's android {} section.
I get error "A problem occurred evaluating script. > Could not get unknown property 'org' for project ':subprojectName' of type org.gradle.api.Project."
D
D. Sergeev

please add this code to android section inside your app/build.gradle

compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8
    }

its working great can you please explain it, why we need to do this and whats its mean.
it works, when my destination fragment was not able to accept navArgs() and was complaining about inline bytecode built. My app gradle had compile options for source and target but i didnt have kotlinOptions. After i added Kotlin options and clean PRoject> Rebuild Project. worked fine.
It doesn't differ from the top answer.
Z
ZX9

In my case, just changingTarget JVM Version like this: File > Setting > Kotlin Compiler > Target JVM Version > 1.8 did not help. However, it does resolved compile time error. But failed at runtime.

I also had to add following in app build.gradle file to make it work.

 android {
     // Other code here...
     kotlinOptions {
        jvmTarget = "1.8"
     }
 }

This doesn't work.
O
Orposuser

When the other solutions did not work for you (Changing JVM version on Compiler settings and adding jvmTarget into your build.gradle), because of your .iml files trying to force their configurations you can change the target platform from Project Settings.

Open File > Project Structure

Go to Facets under Project Settings If it is empty then click on the small + button

If it is empty then click on the small + button

Click on your Kotlin module/modules

Change the Target Platform to JVM 1.8 (also it's better to check Use project settings option)


I can't find this or the 'facets' section in Android Studio... 🤔 I had to edit the app.iml manually. I set <configuration version="3" platform="JVM 1.8" useProjectSettings="false"> to true and it worked. However, the file keeps changing back!
@Aphex It's actually under "File" > "Project Structure" then under "Project Settings" > "Facets", I had nothing there, so I cliked "+" > "Kotlin" > Select my project. That did it for me :)
This works for me, but being forced back to 1.6 every time I add to my build.gradle.kts file.
Is there a way to have this configured and picked up from the gradle file? IMHO this being misconfigured is a bug in intellij.
Z
Zoe stands with Ukraine

In my case this code didn't work until I moved apply plugin: 'kotlin-android' from bottom to top.

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"
    }
}

kotlinOptions { jvmTarget = "1.8" } Didi the trick for me, thx
M
Muhammad Maqsood

In Android Studio 4.3.2 adding through the below procedure is not working.

Open the IntelliJ preferences Go to Build, Execution, Deployment > Compiler > Kotlin Compiler BUT Other Settings > Kotlin compiler if Android Studio > 3.4 Change the Target JVM version to 1.8 Click Apply

The reason is, Android studio is unable to add the below code in the module level Gradle file. Please add it manually.

kotlinOptions {
    jvmTarget = "1.8"
}

https://i.stack.imgur.com/VmxAo.png


only by adding manually, it worked for me. For some reason, android studio is really buggy and it does not consider changes applied unless we restart the ide by deleting all cache.
Tnx, your solution worked for me, although I needed to restart android studio to make it reconfigure project!
U
USMAN osman

Feb 2020 android 3.4+ Go to File -> Settings -> Kotlin Compiler -> Target JVM Version > set to 1.8 and then make sure to do File -> Sync project with Gradle files Or add this into build.gradle(module:app) in android block:

kotlinOptions {
           jvmTarget = "1.8"
         }

confirmed that you need to do File -> Sync project with Gradle files, then it works
F
Fabian Braun

If you have many sourcesets/modules it can be cumbersome to configure the jvmTarget for each of them separately.

You can configure the jvmTarget for all of them at once like so:

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

This snippet can be used on top level of your gradle.build file

After modifying the gradle file Reimport All Gradle Imports. To check if it worked, open Project Structure and verify that IntelliJ correctly assigned JVM 1.8 to all Kotlin-Modules. It should look like this:

https://i.stack.imgur.com/SdndZ.png

I would not recommend changing the platform directly in IntelliJ, because anyone else cloning your project for the first time is likely to face the same issue. Configuring it correctly in gradle has the advantage that IntelliJ is going to behave correctly for them right from the start.


J
Johan Vergeer

As it is written in the using-maven docs from the Kotlin website:

You just have to put <kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget> into the properties section of your pom.xml


After trying everything, yours was the only solution that worked for me
S
Shoaib Mushtaq

In my case, jvmTarget was already set in build.gradle file as below.

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

But my issue was still there. Finally, it gets resolved after Changing Target JVM version from 1.6 to 1.8 in Preferences > Other Settings > Kotlin Compiler > Target JVM version. see attached picture,

https://i.stack.imgur.com/zonA2.png


Great Help, you saved my day too, Thanks
C
Costa

This helped my project to build, add this to module build.gradle file:

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

A
AdrianoCelentano

For me the reason was this configuration in my build gradle was in some modules and in some it wasnt

android {  
...      
kotlinOptions {
        val options = this as KotlinJvmOptions
        options.jvmTarget = "1.8"
    }
...
android {

Thanks, this was the only solution that worked for me. I am using kts buiild files.
Thanks, this is also the solutions that worked for me. And much declarative this way. stackoverflow.com/a/57041765/3763032 kevin also stated this, due to the smartcast in kotlin gradle files .kts it is available directly
V
Vikas Sharma

In my case, I solved this by following these two steps

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"
        }
    }

Hey thanks for the answer, I had to do the 2nd step, and its working. Can you explain why it is needed?
you can find more details on this closed issue it's good to know [github.com/mikepenz/Android-Iconics/issues/454]
That link is dead
It doesn't work.
K
Kevin Robatel

For Gradle with Kotlin language (*.gradle.kts files), add this:

android {
    [...]
    kotlinOptions {
        this as KotlinJvmOptions
        jvmTarget = "1.8"
    }
}

Why do we need to cast this to KotlinJvmOptions. Isn't the this receiver in the kotlinOptions block already KotlinJvmOptions? Still it doesn't work for me without the cast
@11m0, I think it's related to this issue: github.com/gradle/kotlin-dsl-samples/issues/1368
When KotlinJvmOptions is not found, try using the full name "org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions".
О
Олег Сухих

The next solution helped me. Add to build.gradle

 compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

Useful if you are using this without android
n
naXa stands with Ukraine

in most cases this is enough:

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

if you have declared custom Gradle tasks like integrationTest for example, add a configuration for compile<YourTaskName>Kotlin as well:

compileIntegrationTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

this would work too by adding to gradle file --> compileOptions { sourceCompatibility = 1.8 targetCompatibility = 1.8 } kotlinOptions { jvmTarget = "1.8" }
interestingly, only your solution worked with my non-android module! thanks!
m
mattie

All answers here are using gradle but if someone like me ends up here and needs answer for 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>

The change from jetbrains archetype for kotlin-jvm is the <configuration></configuration> specifying the jvmTarget. In my case 11


A
Anoop M Maddasseri

Setting sourceCompatibility = JavaVersion.VERSION_1_8 enables desugaring, but it is currently unable to desugar all the Java 8 features that the Kotlin compiler uses.

https://i.stack.imgur.com/k77tB.png

Fix - Setting kotlinOptions.jvmTarget to JavaVersion.VERSION_1_8 in the app module Gradle would fix the issue.

Use Java 8 language features: 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"
  }
}

k
kigawas

You may need to set both compileKotlin and compileTestKotlin. This works on 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.
    }
}

i
ironman

if you are in android project

in your app's build.gradle under 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"
    }
}

A
Amin Bahiraee

If non of the above answers works, you can do this in kotlin dsl

android {
...

    tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
        kotlinOptions {
            jvmTarget = "1.8"
        }
    }
}

P
Peter V. Mørch

I'm using Kotlin and Gradle for normal JVM development, (not android) and this worked for me in build.gradle:

allprojects {
    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
        kotlinOptions.jvmTarget = JavaVersion.VERSION_11.toString()
    }
}

V
Vadik

I did all steps but didn't success the problem was

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

when I updated to

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

shows that problem when I back to

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

the problem fixed


After rebuilding my project it states with this error message "This version (1.0.3) of the Compose Compiler requires Kotlin version 1.5.30 but you appear to be using Kotlin version 1.4.32 which is not known to be compatible. Please fix your configuration (or suppressKotlinVersionCompatibilityCheck but don't say I didn't warn you!)."
H
Hinotori

If using Visual Studio Code** with Kotlin extension, go to the plugin management Crtl + Shift + x, type kotlin and click on manage (the little gear) >> Configure Extension Settings

on Kotlin >> Compiler >> Jvm:Target - type the java version. In my situation just typed 1.8

And then restart :-)

** vscode or just 'code' for linux


W
Waldmann

Nothing worked for me until I updated my kotlin plugin dependency. Try this: 1. Invalidate cahce and restart. 2. Sync project (at least try to) 3. Go File -> Project Structure -> Suggestions 4. If there is an update regarding Kotlin, update it. Hope it will help someone.


the easiest fix
B
Briantical

Using the Kotlin Gradle DSL, this solved the issue for me. I added this to the build.gradle.kts. This is in addition to the answer by Joel

val compileKotlin: KotlinCompile by tasks
compileKotlin.kotlinOptions.jvmTarget = JavaVersion.VERSION_1_8.toString()

Can you please share where exactly in the file you put this? And which version of the android plugin and gradle you are using?
This is not an Android project. I am running Gradle 6.4.
I
Invest

If you use Eclipse assuming you downloaded the Kotlin plugin:

Right click project -> Properties -> Kotlin Compiler -> Enable project specific settings -> JVM target version "1.8"


B
Bills

In my case File > Setting > Kotlin Compiler > Target JVM Version > 1.8