Linux下pyqtdeploy构建安卓App出现Unsupported class file major version 61错误
错误根因
这个报错是版本不兼容导致的:major version 61对应Java 17编译生成的类文件版本,你当前使用的Gradle 7.1.1内置的ASM解析库版本过低,无法识别Java 17的类格式,所以抛出解析异常。
可落地解决方案
- 方案1:降级Java版本
Gradle 7.1.1最高兼容到Java 16,你可以将本地JDK版本替换为Java 16或者Java 11(长期支持版本稳定性更高)。修改完成后在Linux终端执行以下命令确认版本生效:
echo $JAVA_HOME java -version javac -version
如果版本未生效,编辑~/.bashrc(bash用户)或~/.zshrc(zsh用户)文件,将JAVA_HOME变量指向你安装的低版本JDK路径,保存后执行source ~/.bashrc或source ~/.zshrc刷新环境变量。
- 方案2:升级Gradle版本
Gradle从7.3版本开始正式支持Java 17,你可以将项目使用的Gradle版本升级到7.3以上的稳定版。如果项目使用Gradle Wrapper,在项目根目录执行以下命令即可升级:
./gradlew wrapper --gradle-version 7.6.4
升级完成后重新执行构建操作即可。
- 方案3:指定编译兼容版本
如果不想改动全局JDK和Gradle版本,可以在pyqtdeploy生成的安卓项目的build.gradle配置文件中添加JVM版本兼容配置,强制指定编译目标为低版本JVM:
android { // 原有配置保持不变,新增以下配置 compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } // 如果项目用到kotlin,新增以下配置 kotlinOptions { jvmTarget = "11" } }
修改完成后执行./gradlew clean清空构建缓存,再重新执行构建操作即可。
内容的提问来源于stack exchange,提问作者askaskaskask
相关产品推荐
相关产品推荐

