状況
EclipseでSpringFrameworkの新規プロジェクト作成後、とりあえず起動確認をしてみようとした時につまづいた時の話。
発生したエラー
SEVERE: Exception sending context destroyed event to listener instance of class org.springframework.web.context.ContextLoaderListener java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:172) (略)
発生原因
・tomcatのバージョンを適切なものを選べていなかった
対処内容詳細
1. Eclipseで動かしているJavaのバージョンを確認
参考:Eclipseを動かしているJava VMを確認する方法 | ITSakura
※「Eclipseについて」、は僕の環境(Mac)では、ツールバーの「Eclipse」をクリックした中にありました
僕の環境では、
-vm /Applications/Eclipse_2019-06.app/Contents/java/11/Home/lib/server/libjvm.dylib
となっていたのでJava11が用いられている模様と理解。
2. Tomcatのどのバージョンを使えば良いか確認
Eclipseでの新規サーバーの作成時に、デフォルトで用意されているものの一覧の中から「サーバー・ランタイム環境」が「Java11」となっている「Tomcat v9.0サーバー」を選択したところ、無事に動きました。
tomcatとjava(,jdk,jre)のversionについては、理解ができていないので追々調べたいと思います・・・
余談
起動させた時にアクセスする先は、
http://localhost:8080/
ではなく、http://localhost:8080/【パッケージ名の一番末尾】
です。
(地味に苦戦しました)