warをデプロイしたらFileNotFoundExceptionが発生してWebアプリが起動しない問題
Spring MVC のプロジェクトで、プロジェクト名を右クリックして[Run As]-[maven build]を選択してターゲットで package を指定して実行。
生成された war ファイルを tomcat にデプロイしたら、起動に失敗した。
1 30, 2014 9:11:04 午前 org.apache.catalina.core.StandardContext listenerStart 重大: クラス org.springframework.web.context.ContextLoaderListener のリスナイン スタンスにコンテキスト初期化イベントを送信中の例外です org.springframework.beans.factory.BeanDefinitionStoreException: IOException pars ing XML document from ServletContext resource [/WEB-INF/spring/root-context.xml] ; nested exception is java.io.FileNotFoundException: Could not open ServletConte xt resource [/WEB-INF/spring/root-context.xml] at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBea nDefinitions(XmlBeanDefinitionReader.java:341) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBea nDefinitions(XmlBeanDefinitionReader.java:302) at org.springframework.beans.factory.support.AbstractBeanDefinitionReade r.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174) at org.springframework.beans.factory.support.AbstractBeanDefinitionReade r.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209) at org.springframework.beans.factory.support.AbstractBeanDefinitionReade r.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180) at org.springframework.web.context.support.XmlWebApplicationContext.load BeanDefinitions(XmlWebApplicationContext.java:125) at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131) at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:522) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:436) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4961) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5455) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) (長いので以下略)
war が展開された先のディレクトリの内部を見ると、たしかに入ってない。というか、JSPファイルもひとつもないし、webapps/resources に置いた *css とか *js とか *[png|jpg]も入ってなかった。
ぐぐってみたところ、pom.xml の設定が足りなかったみたい。
warSourceDirectory を追加したら、あるべきファイルがすべて war に含まれるようになった。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.1.1</version> <configuration> <webXml>src/main/webapp/WEB-INF/web.xml</webXml> <warSourceDirectory>src/main/webapp</warSourceDirectory> </configuration> </plugin>