升级Robolectric后出现Unsupported class file major version 59报错如何解决
Robolectric 4.6.1版本升级编译报错修复方案
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 59
该报错的核心原因是:类文件主版本号59对应Java 15编译生成的类,你当前项目使用的编译JDK版本低于15,无法解析该版本的类文件。Robolectric 4.6.1传递依赖的org.bouncycastle:bcprov-jdk15on:1.68是基于Java 15编译的,因此触发了兼容性问题。
可选修复方案如下:
- 方案1:升级测试环境JDK版本
仅调整测试环节使用的JDK版本到15及以上即可,无需修改生产环境的编译JDK版本。Gradle项目可在build.gradle中添加如下配置:
如果使用JDK 17及更高版本,对应修改VERSION_X的版本号即可。test { javaVersion = JavaVersion.VERSION_15 } - 方案2:强制降级bouncycastle依赖版本
不想升级JDK的话,可以强制覆盖Robolectric传递的高版本bouncycastle依赖,改用兼容低版本JDK的1.67版本。在build.gradle的dependencies配置块前添加如下规则:
1.67版本的bcprov包基于Java 11编译,可兼容绝大多数常用的JDK版本。configurations.all { resolutionStrategy.force "org.bouncycastle:bcprov-jdk15on:1.67" } - 方案3:升级Robolectric到更高版本
该兼容性问题已在Robolectric 4.7及以上版本官方修复,直接将依赖版本升级到org.robolectric:robolectric:4.7或更高稳定版即可解决问题。
内容的提问来源于stack exchange,提问作者Vahe Gharibyan
相关产品推荐
相关产品推荐

