Java8环境构建Gradle项目报jgit类版本55.0不兼容错误怎么解决?
A problem occurred evaluating root project 'xxx'. > Could not create task ':prepareRelease'. > Could not create task of type 'GitReleaseTask'. > Could not generate a decorated class for type GitReleaseTask. > org/eclipse/jgit/lib/ObjectId has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
核心原因
你之前使用的jgit 5.13早期小版本是Java 8编译的,后续jgit 5.13的补丁版本(5.13.2及之后)切换了编译目标为Java 11,类文件版本号为55.0,和你当前构建用的Java 8(最高支持52.0版本类文件)不兼容,触发报错。
可行解决方案
方案1:强制锁定兼容Java 8的jgit版本(改动最小,优先选择)
直接在项目根目录的build.gradle的构建脚本依赖中强制指定jgit为5.13分支最后一个Java 8兼容版本即可,不需要修改其他业务代码和项目JDK配置:buildscript { dependencies { classpath ('org.eclipse.jgit:org.eclipse.jgit:5.13.1.202206130422-r') { force = true } } }方案2:升级构建用JDK版本
将运行Gradle的JDK版本升级到11及以上,如果你的项目最终产出需要兼容Java 8运行,只需要额外指定编译目标版本即可,不会影响产出物兼容性:java { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 }方案3:降级jgit到5.12.x版本
整个5.12版本分支的jgit全部采用Java 8编译,没有兼容问题,直接将jgit依赖版本替换为任意5.12.x正式版本即可。
内容的提问来源于stack exchange,提问作者JMBA
相关产品推荐
相关产品推荐

