我正在开发一个使用 Java 等语言和 Bazel 的项目。我遇到了一堆依赖冲突,想屏蔽一个 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)
在 Google 和 ChatGPT 之间,我尝试了很多方法,但都没有什么效果,而 ChatGPT 也开始给出与已经尝试过的方法相同的建议。
编辑:为了进一步澄清解决方案,我切换到了 openjdk 21,然后切换了插件,com.gradleup.shadow
该插件似乎是我一直在使用的死 repo 的后继者。