Gradle 版本与 Java 构建不匹配

问题描述 投票:0回答:1
  1. 我的 Gradle Wrapper 设置如下:
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
  1. 从 Gradle 中的兼容性矩阵 - 看来我可以安装 Java 版本 17?我使用 Eclipse Temurin 17.0.5 来使用它。已验证
    JAVA_HOME
    已设置。我的
    build.gradle
    文件中还有以下内容
java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(17))
    }
}
  1. 我收到错误
    "Unsupported Class File Major Version 61"
    。来自众多之一的详细堆栈跟踪...
java.lang.instrument.IllegalClassFormatException: Error while instrumenting sun/text/resources/cldr/ext/FormatData_en_GB.
        at org.jacoco.agent.rt.internal_1f1cc91.CoverageTransformer.transform(CoverageTransformer.java:93)
        at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:244)
        at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
        at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:541)
        at java.base/java.lang.ClassLoader.defineClass2(Native Method)
        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1108)
        at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:182)
        at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:821)
        at java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:741)
        at java.base/jdk.internal.loader.BuiltinClassLoader.findClass(BuiltinClassLoader.java:621)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:637)
        at java.base/java.lang.Class.forName(Class.java:545)
        at jdk.localedata/sun.util.resources.provider.LocaleDataProvider.loadResourceBundle(LocaleDataProvider.java:54)
        at jdk.localedata/sun.util.resources.provider.LocaleDataProvider.getBundle(LocaleDataProvider.java:40)
        at java.base/sun.util.resources.Bundles$2.run(Bundles.java:270)
        at java.base/sun.util.resources.Bundles$2.run(Bundles.java:265)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
        at java.base/sun.util.resources.Bundles.loadBundleFromProviders(Bundles.java:264)
        at java.base/sun.util.resources.Bundles.findBundleOf(Bundles.java:201)
        at java.base/sun.util.resources.Bundles.loadBundleOf(Bundles.java:145)
        at java.base/sun.util.resources.Bundles.of(Bundles.java:106)
        at java.base/sun.util.resources.LocaleData$1.run(LocaleData.java:186)
        at java.base/sun.util.resources.LocaleData$1.run(LocaleData.java:183)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
        at java.base/sun.util.resources.LocaleData.getBundle(LocaleData.java:183)
        at java.base/sun.util.resources.LocaleData.getDateFormatData(LocaleData.java:146)
        at java.base/java.text.DateFormatSymbols.initializeData(DateFormatSymbols.java:745)
        at java.base/java.text.DateFormatSymbols.<init>(DateFormatSymbols.java:151)
        at java.base/sun.util.locale.provider.DateFormatSymbolsProviderImpl.getInstance(DateFormatSymbolsProviderImpl.java:85)
        at java.base/java.text.DateFormatSymbols.getProviderInstance(DateFormatSymbols.java:370)
        at java.base/java.text.DateFormatSymbols.getInstanceRef(DateFormatSymbols.java:360)
        at java.base/java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:626)
        at java.base/java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:603)
        at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.getLastResortErrorLogFile(SystemApplicationClassLoaderWorker.java:162)
        at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:111)
        at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
        at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
        at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Caused by: java.io.IOException: Error while instrumenting sun/text/resources/cldr/ext/FormatData_en_GB.
        at org.jacoco.agent.rt.internal_1f1cc91.core.instr.Instrumenter.instrumentError(Instrumenter.java:170)
        at org.jacoco.agent.rt.internal_1f1cc91.core.instr.Instrumenter.instrument(Instrumenter.java:120)
        at org.jacoco.agent.rt.internal_1f1cc91.CoverageTransformer.transform(CoverageTransformer.java:91)
        ... 37 more
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 61
        at org.jacoco.agent.rt.internal_1f1cc91.asm.ClassReader.<init>(ClassReader.java:184)
        at org.jacoco.agent.rt.internal_1f1cc91.asm.ClassReader.<init>(ClassReader.java:166)
        at org.jacoco.agent.rt.internal_1f1cc91.asm.ClassReader.<init>(ClassReader.java:152)
        at org.jacoco.agent.rt.internal_1f1cc91.core.internal.instr.InstrSupport.classReaderFor(InstrSupport.java:247)
        at org.jacoco.agent.rt.internal_1f1cc91.core.instr.Instrumenter.instrument(Instrumenter.java:86)
        at org.jacoco.agent.rt.internal_1f1cc91.core.instr.Instrumenter.instrument(Instrumenter.java:118)

我正在从命令行(MacOS 终端)运行所有内容。我需要做什么才能让

./gradlew build
成功工作?

问候,

gradle java-17
1个回答
0
投票

这只是版本升级的问题。这与我的 Mockito 和 Jacoco 使用的版本有关。我将 Mockito 升级到 5.0.0,将 Jacoco 升级到 0.8.8,它消除了几乎所有类似的错误。

我仍然遇到错误,但它们是出于不同的原因,并且该线程不在上下文中。

© www.soinside.com 2019 - 2024. All rights reserved.