Android Studio导入Java16编译Jar报Unsupported class file version:60错误
报错原因
类文件版本号60对应Java 16编译生成的字节码,该报错是Android构建工具的D8/R8 dex编译器不支持高版本Java字节码导致的,和项目本身使用的JDK版本没有直接关联,这也是你之前调整JDK和基础Gradle配置没有生效的核心原因。
可行解决方案
方案1:升级Android Gradle Plugin(AGP)至支持Java 16的版本
AGP 7.0及以上版本官方支持Java 16字节码编译,按如下步骤调整配置即可:
- 升级项目根目录
build.gradle中的AGP版本至7.0.0以上,示例配置:
dependencies { classpath "com.android.tools.build:gradle:7.4.2" // 保留原有其他插件依赖 }
- 升级
gradle-wrapper.properties中的Gradle版本和AGP版本匹配,AGP 7.4.2对应Gradle 7.5及以上:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
- 在模块级
build.gradle中添加Java版本适配配置:
android { // 保留原有其他配置 compileOptions { sourceCompatibility JavaVersion.VERSION_16 targetCompatibility JavaVersion.VERSION_16 } // 项目使用Kotlin的话额外添加如下配置 kotlinOptions { jvmTarget = "16" } }
方案2:开启核心库Desugar支持
如果升级AGP后仍存在兼容性问题,可以额外开启核心库desugar适配高版本Java特性:
android { // 保留原有其他配置 compileOptions { coreLibraryDesugaringEnabled true sourceCompatibility JavaVersion.VERSION_16 targetCompatibility JavaVersion.VERSION_16 } } dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' // 保留原有其他依赖 }
方案3:降级Jar包字节码版本
如果无法升级AGP,可以通过字节码转换工具将Jar包的Java 16字节码降级为Android支持的版本(比如Java 11):
- 先解压目标Jar包获取所有class文件
- 使用ASM、JarJar等字节码工具批量修改class文件的版本号,或者使用javac的--release参数重新编译解压后的源码,再重新打包为Jar即可使用。
内容的提问来源于stack exchange,提问作者achicn3
相关产品推荐
相关产品推荐

