It fails like this:
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 66
at org.springframework.asm.ClassReader.<init>(ClassReader.java:199)
at org.springframework.asm.ClassReader.<init>(ClassReader.java:180)
at org.springframework.asm.ClassReader.<init>(ClassReader.java:166)
at org.springframework.asm.ClassReader.<init>(ClassReader.java:287)
at org.springframework.boot.loader.tools.MainClassFinder.createClassDescriptor(MainClassFinder.java:254)
at org.springframework.boot.loader.tools.MainClassFinder.doWithMainClasses(MainClassFinder.java:136)
at org.springframework.boot.loader.tools.MainClassFinder.findSingleMainClass(MainClassFinder.java:109)
at org.springframework.boot.gradle.plugin.ResolveMainClassName.findMainClass(ResolveMainClassName.java:145)
at org.springframework.boot.gradle.plugin.ResolveMainClassName.resolveMainClassName(ResolveMainClassName.java:139)
at org.springframework.boot.gradle.plugin.ResolveMainClassName.resolveAndStoreMainClassName(ResolveMainClassName.java:124)
This can be worked around by configuring the application's main class name:
springBoot {
mainClass = 'com.example.ExampleApplication'
}
Comment From: sergey-morenets
Hi @wilkinsona
I encountered the same issue while trying to upgrade to JDK 22. Do you have ETA for the fixes?
Comment From: wilkinsona
Not at this time, I'm afraid. Please use the workaround for now.
Comment From: Eng-Fouad
What about resolveTestMainClassName (run with bootTestRun)? Is there a workaround?
Comment From: Eng-Fouad
I found a workaround for resolveTestMainClassName:
tasks.getByName<org.springframework.boot.gradle.plugin.ResolveMainClassName>("resolveTestMainClassName") {
configuredMainClassName.set("io.fouad.tests.TestAppLauncher")
}
Comment From: mhalbritter
Cause for this is that we downgrade Spring Core in the spring-boot-loader-tools to 6.0.10 to workaround a Gradle limitation with multi-version JAR files.
The ClassReader from Spring Framework 6.1 supports Java 22.