如何用Gradle重定位Jar包?解决依赖冲突与版本报错
解决Gradle Shadow插件报Unsupported class file major version 65问题
问题概述
开发Java+Bazel项目时遭遇大量依赖冲突,计划通过Shade Jar(阴影包)方式解决,但Bazel不支持该操作,因此首次使用Gradle构建,基于ChatGPT生成了以下构建脚本:
plugins { id("java") id("com.github.johnrengelman.shadow") version "8.1.1" } repositories { mavenCentral() maven { url = uri("https://mvnrepository.com/artifact") } } dependencies { implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.18.0' } tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) { relocate 'com.fasterxml.jackson', 'shaded.com.fasterxml.jackson' }
使用Gradle 8.10.2运行时,触发如下报错:
java.lang.IllegalArgumentException: Unsupported class file major version 65 at org.objectweb.asm.ClassReader.<init>(ClassReader.java:199) at org.objectweb.asm.ClassReader.<init>(ClassReader.java:180) at org.objectweb.asm.ClassReader.<init>(ClassReader.java:166) at org.objectweb.asm.ClassReader.<init>(ClassReader.java:287)
尝试谷歌搜索及ChatGPT提供的多种方案后均未解决问题,最终通过以下步骤完成修复:
最终解决方案
- 将JDK环境切换至OpenJDK 21
- 替换Shadow插件为原废弃仓库的继任插件
com.gradleup.shadow
调整后的核心插件配置示例:
plugins { id("java") id("com.gradleup.shadow") version "8.3.0" // 建议使用最新兼容版本 }
内容的提问来源于stack exchange,提问作者gph
相关产品推荐
相关产品推荐

