How I Resolved the Kotlin-Java Compatibility Error in a Flutter Project

Ataxan Rahimli
3 min readSep 30, 2024

--

If you’re working with Flutter and Android, there’s a good chance you’ve run into some frustrating errors — especially when it comes to Kotlin and Java version compatibility. I recently hit one of these errors myself, and it took me some time to figure out how to fix it. But don’t worry, I’m here to walk you through the steps I took to solve it!

The Error That Stopped Me in My Tracks

Here’s the error I was dealing with:

Execution failed for task ':app:compileDebugKotlin'.
> 'compileDebugJavaWithJavac' task (current target is 1.7) and 'compileDebugKotlin' task (current target is 1.8) jvm target compatibility should be set to the same Java version.
Consider using JVM toolchain: https://kotl.in/gradle/jvm/toolchain

Long story short, this error is saying that Kotlin and Java are targeting different JVM (Java Virtual Machine) versions. In my case, Kotlin was using version 1.8 while Java was stuck on 1.7. The solution? Get them both on the same page — literally the same JVM version.

The Solution: Updating Gradle and Plugins

After some research and trial and error, I found that the problem came down to outdated versions of Gradle and my Kotlin and Android plugins. Here’s what I did to fix it:

Step 1: Upgrade the Gradle Version

First, I went into my android/gradle/wrapper/gradle-wrapper.properties file and bumped up the Gradle version. It looked like this:

# Old version:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.x-bin.zip

# Updated version:
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip

Upgrading to Gradle 8.8 solved a lot of compatibility issues right away, especially since Kotlin 2.0 works better with this newer version of Gradle.

Step 2: Update settings.gradle for Plugin Management

Next, I updated my settings.gradle file to make sure all the plugins were using the right versions. Here’s what my updated file looked like:

pluginManagement {
def flutterSdkPath = {
def properties = new Properties()
file("local.properties").withInputStream { properties.load(it) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
return flutterSdkPath
}()

includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")

repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}

plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "8.1.0" apply false
id "org.jetbrains.kotlin.android" version "2.0.20" apply false
}

include ":app"

Here’s what I changed:

  • Kotlin Plugin: I upgraded the Kotlin plugin to version 2.0.20 to match the new Gradle version.
  • Android Plugin: I also upgraded the Android plugin to version 8.1.0 to ensure everything plays nicely together.
  • Repositories: I added google(), mavenCentral(), and gradlePluginPortal() to fetch the latest dependencies easily.

Why Bother Updating?

Updating these tools and plugins might feel like an annoying task, but it’s absolutely necessary. These updates come with new features, performance improvements, and most importantly, they fix bugs. Keeping everything in sync — especially Java, Kotlin, and Gradle — is essential to avoid errors like the one I was dealing with.

Step 3: Clean and Rebuild the Project

Once I made these updates, I needed to clean and rebuild my Flutter project. Here’s what I ran in the terminal:

flutter clean
flutter pub get
flutter run

This cleaned out old builds and dependencies, and after that, the project compiled without any issues!

Final Thoughts

If you’re getting similar errors in your Flutter project, it’s probably because of version mismatches between Kotlin, Java, and Gradle. Updating everything to the latest stable versions, as I did, should fix the issue.

Trust me, keeping your tools up to date not only avoids these frustrating errors, but it also keeps your project running smoothly in the long term.

If you’ve found other ways to fix this issue or have questions, feel free to drop a comment below. I’d love to hear how you solved it!

--

--

No responses yet