Spring Boot 3.4.1 documentation says it requires Java 17. However, when I upgraded from 2.7.12, Gradle is reporting Unsupported class file major version 65

Caused by: java.util.concurrent.ExecutionException: org.gradle.api.GradleException: Failed to create Jar file C:\.gradle\caches\jars-9\d8d29f440b7e01c66fd10a390db56541\spring-core-6.2.1.jar.
        at org.gradle.internal.UncheckedException.unchecked(UncheckedException.java:74)
        ... 167 more
Caused by: org.gradle.api.GradleException: Failed to create Jar file C:\TylerDev\.gradle\caches\jars-9\d8d29f440b7e01c66fd10a390db56541\spring-core-6.2.1.jar.
        at org.gradle.internal.classpath.ClasspathBuilder.jar(ClasspathBuilder.java:55)
        at org.gradle.internal.classpath.InstrumentingClasspathFileTransformer.instrument(InstrumentingClasspathFileTransformer.java:137)
        at org.gradle.internal.classpath.InstrumentingClasspathFileTransformer.transform(InstrumentingClasspathFileTransformer.java:132)
        at org.gradle.internal.classpath.InstrumentingClasspathFileTransformer.transform(InstrumentingClasspathFileTransformer.java:96)
        at org.gradle.internal.classpath.DefaultCachedClasspathTransformer.transformFile(DefaultCachedClasspathTransformer.java:193)
        at org.gradle.internal.classpath.DefaultCachedClasspathTransformer.lambda$cachedFile$6(DefaultCachedClasspathTransformer.java:186)
        at org.gradle.internal.UncheckedException.unchecked(UncheckedException.java:74)
        at org.gradle.internal.classpath.DefaultCachedClasspathTransformer.lambda$transformAll$9(DefaultCachedClasspathTransformer.java:233)
        ... 2 more
Caused by: java.io.IOException: Failed to process the entry 'META-INF/versions/21/org/springframework/core/task/VirtualThreadDelegate.class' from 'C:\.gradle\caches\modules-2\files-2.1\org.springframework\spring-core\6.2.1\f42e6b51d9c0c2fcf95df9e5848470d173adc9af\spring-core-6.2.1.jar'
        at org.gradle.internal.classpath.InstrumentingClasspathFileTransformer.lambda$visitEntries$1(InstrumentingClasspathFileTransformer.java:161)
        at org.gradle.internal.classpath.ClasspathWalker.visitJarContents(ClasspathWalker.java:91)
        at org.gradle.internal.classpath.ClasspathWalker.visit(ClasspathWalker.java:55)
        at org.gradle.internal.classpath.InstrumentingClasspathFileTransformer.visitEntries(InstrumentingClasspathFileTransformer.java:148)
        at org.gradle.internal.classpath.InstrumentingClasspathFileTransformer.lambda$instrument$0(InstrumentingClasspathFileTransformer.java:139)
        at org.gradle.internal.classpath.ClasspathBuilder.buildJar(ClasspathBuilder.java:66)
        at org.gradle.internal.classpath.ClasspathBuilder.jar(ClasspathBuilder.java:53)
        ... 9 more
Caused by: 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.gradle.internal.classpath.InstrumentingClasspathFileTransformer.lambda$visitEntries$1(InstrumentingClasspathFileTransformer.java:151)
        ... 15 more

Comment From: bclozel

Spring Framework is publishing a multi-release JAR to ship Java 21 virtual thread support. This is not a Spring Framework issue, but a Gradle issue that has been fixed already. Please upgrade your Gradle version.

Comment From: myronu

For some reason, it works with Spring Boot 3.3.7, but not 3.4.1, so I will use that until we can upgrade gradle

Comment From: bclozel

Spring Boot 3.4 requires Gradle 7.6.4+ or 8.3+; this might explain the behavior you're seeing.