原因
Spring Boot 2.4.1がJava17に対応していないから
(正確には、Spring boot2.4.1に含まれるクラスファイルがJava17をサポートしていないため
スタックトレースの見方
Java17に対応していないエラーメッセージ
下記のエラーメッセージは「JDK17に対応していないクラスファイルです。」の記載です。
Eclipseの設定を見ても、JDK17が指定されているのがわかるかと思います。
これです→Javaシステム・ライブラリー[JavaSE-17]
[2m2021-10-23 09:44:40.392[0;39m [33m WARN[0;39m [35m44022[0;39m [2m---[0;39m [2m[ restartedMain][0;39m [36mConfigServletWebServerApplicationContext[0;39m [2m:[0;39m Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [/Applications/Eclipse_2021-09.app/Contents/workspace/SpringBootSample/target/classes/com/example/SpringBootSampleApplication.class]; nested exception is org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet: file [/Applications/Eclipse_2021-09.app/Contents/workspace/SpringBootSample/target/classes/com/example/SpringBootSampleApplication.class]; nested exception is java.lang.IllegalArgumentException: Unsupported class file major version 61
Spring bootのバージョン確認
スタックトレースのフルを見ると、Spring-bootのバージョンが2.4.1であることが分かります。
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
[32m :: Spring Boot :: [39m [2m (v2.4.1)[0;39m
対応方法
JDKのバージョンを下げる
低いバージョンのJDKをダウンロードし、インストールしてください。
推奨は現在のJavaのLTS版主流のJDK11です。
OpenJDK11で検索し、JDKをダウンロードし、インストール後、
設定画面>Java>インストール済みJRE
にJDK11を追加してください。
その後、pom.xmlを以下の通り書き換えてください。
<java.version>11</java.version>
Spring bootのバージョンをJava17対応バージョンに上げる
Spring-BootがJava17に対応したのは2.5.5からです。
リリースノート
Spring Boot 2.5.5 available now
This release includes 41 bug fixes, documentation improvements, and dependency upgrades. Thanks to all those who have contributed with issue reports and pull requests.
Documentation
Document support for Java 17 #26767
pom.xmlを、以下を参考にしながら、2.5.5以上のバージョンを固定指定してください。
Maven Repository: org.springframework.boot » spring-boot » 2.5.5