如何解决Android SDK命令行工具(sdkmanager等)运行报错问题
解决Android SDK Manager的UnsupportedClassVersionError错误
问题说明
在Linux Mint 21.2系统中编译基于Python 3.10.12开发的Android应用,安装Android SDK命令行工具(commandlinetools-linux-10406996_latest.zip)并配置路径后,运行sdkmanager "platforms;android-27"时,使用OpenJDK 8或11均触发UnsupportedClassVersionError,提示类文件版本61.0高于当前JRE支持的最高版本,设置JAVA_HOME指向JDK8或11后问题仍存在。
OpenJDK 8下的错误日志
Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" 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 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:756) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:473) at java.net.URLClassLoader.access$100(URLClassLoader.java:74) at java.net.URLClassLoader$1.run(URLClassLoader.java:369) at java.net.URLClassLoader$1.run(URLClassLoader.java:363) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:362) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:621)
OpenJDK 11下的错误日志
Error: LinkageError occurred while loading main class com.android.sdklib.tool.sdkmanager.SdkManagerCli 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
解决方法
1. 类版本对应关系说明
类文件版本61.0对应OpenJDK 17,你当前使用的JDK8(对应版本52.0)、JDK11(对应版本55.0)版本过低,无法兼容该版本的sdkmanager,必须安装并使用OpenJDK 17或更高版本。
2. 安装OpenJDK 17
在Linux Mint 21.2中执行以下命令安装:
sudo apt update && sudo apt install openjdk-17-jdk
3. 配置JAVA_HOME指向JDK17
- 临时生效(仅当前终端会话):
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH
- 永久生效(重启终端后仍有效):
编辑~/.bashrc或~/.profile文件,添加上述两行配置,然后执行source ~/.bashrc(或对应文件)使配置生效。
4. 验证Java版本
运行以下命令确认当前使用的是OpenJDK 17:
java -version
输出应类似:
openjdk version "17.0.x" 202x-xx-xx OpenJDK Runtime Environment (build 17.0.x+xx-Ubuntu-0ubuntu1.22.04) OpenJDK 64-Bit Server VM (build 17.0.x+xx-Ubuntu-0ubuntu1.22.04, mixed mode, sharing)
5. 重新运行sdkmanager
回到Android SDK命令行工具所在目录,执行:
./sdkmanager "platforms;android-27"
内容的提问来源于stack exchange,提问作者SFriendly
相关产品推荐
相关产品推荐

