Resolving "UnsupportedClassVersionError" for Android SDK Manager in Flutter
Problem Statement
When setting up Flutter on Linux (Ubuntu), you might encounter this error when running flutter doctor --android-licenses
:
java.lang.UnsupportedClassVersionError:
com/android/sdklib/tool/sdkmanager/SdkManagerCli has been compiled
by a more recent version of the Java Runtime (class file version 61.0),
this version of the Java Runtime only recognizes class file versions up to 55.0
This occurs because Android SDK Command-line Tools (latest) require Java 17 (class version 61.0), but your current Java version (version 55.0 = Java 11) is outdated. The error prevents you from accepting Android SDK licenses needed for Flutter development.
Solutions
Recommended Solution: Update Java
Upgrade to Java 17 or newer and configure it correctly:
Install Java 17 on Ubuntu:
bashsudo apt update sudo apt install openjdk-17-jdk
Set
JAVA_HOME
environment variable:bash# Add to ~/.bashrc or ~/.zshrc export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH
WARNING
Verify the exact path with
ls /usr/lib/jvm
as your directory structure might varyConfirm Java version:
bashjava -version # Should output "openjdk 17.x.x"
Run license acceptance:
bashflutter doctor --android-licenses # Accept all licenses with 'y'
Alternative Solution: Use Older SDK Tools (Workaround)
If upgrading Java isn't feasible, install compatible Android SDK Command-line Tools:
In Android Studio:
- Open Tools > SDK Manager > SDK Tools
- Uncheck Android SDK Command-line Tools (latest)
- Check Android SDK Command-line Tools 8.0
- Click Apply
Rename tools directory:
bash# Ubuntu/Mac cd ~/Android/Sdk/cmdline-tools mv 8.0 latest
TIP
For Windows, navigate to:
C:\Users\<USERNAME>\AppData\Local\Android\Sdk\cmdline-tools
Verify solution:
bashflutter doctor --android-licenses
Why These Solutions Work
- Java 17+ provides required runtime support for the latest Android tools
- The class version error specifically indicates a Java version mismatch
- Installing older tools (v8.0) works because they support Java 11 environments
- Renaming the folder satisfies Flutter's path expectations for
cmdline-tools/latest
Caveat
The workaround may limit access to newer Android features. Use it only for local development if upgrading Java isn't possible.
For long-term stability, always:
- Keep Android Studio updated
- Maintain current JDK installations
- Run
flutter upgrade
regularly