1

I am building a simple Spring MVC Maven built java WAR application. My Maven project cleans and builds successfully and deploys to the server with no errors using the eclipse tomcat plugin. However, when I try to run the application Servlet, I get the following exception :

    Aug 23, 2013 2:35:29 PM org.springframework.web.servlet.FrameworkServlet initServletBean
INFO: FrameworkServlet 'FileWatcher': initialization started
Aug 23, 2013 2:35:29 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing WebApplicationContext for namespace 'FileWatcher-servlet': startup date [Fri Aug 23 14:35:29 BST 2013]; root of context hierarchy
Aug 23, 2013 2:35:29 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [spring/file-watcher.xml]
Aug 23, 2013 2:35:29 PM org.springframework.web.servlet.FrameworkServlet initServletBean
SEVERE: Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [spring/file-watcher.xml]; nested exception is java.io.FileNotFoundException: class path resource [spring/file-watcher.xml] cannot be opened because it does not exist
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(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.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:651)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:599)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:665)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:518)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:459)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
    at javax.servlet.GenericServlet.init(GenericServlet.java:160)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:865)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)
Caused by: java.io.FileNotFoundException: class path resource [spring/file-watcher.xml] cannot be opened because it does not exist
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:158)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328)
    ... 33 more

My project configuration is as follows :

web.xml

    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    version="2.5"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">


    <display-name>FileWatcher</display-name>

    <description>File Watcher</description>


    <!-- To load multiple context files here just put a space between your files 
        listed, like here http://blog.codehangover.com/load-multiple-contexts-into-spring/ -->
    <servlet>
        <servlet-name>FileWatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/file-watcher.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>



    <servlet-mapping>
        <servlet-name>FileWatcher</servlet-name>
        <url-pattern>/FileWatcher/*</url-pattern>
    </servlet-mapping>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/file-watcher.xml</param-value>
    </context-param>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

</web-app>

pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
    default-autowire="byName">

    <bean id="FileWatcher" class="com.test.FileWatcher" init-method="initialize" />

</beans>

And my Java class looks as follows :

 public class FileWatcher {
    ....
    }

I am new to using this system so I'm not sure where I have gone wrong, can anyone help me solve this error?

4
  • 1
    do you have spring/file-watcher.xml in WEB-INF/classes ? Commented Aug 23, 2013 at 13:48
  • Hi, I don't have a WEB-INF/classes folder, should I create one? EDIT : Scratch that, I've checked the target directory, and theres a WEB-INF/classes directory there that contains a file-watcher.xml file. Does it need to be in a spring directory? Commented Aug 23, 2013 at 13:48
  • 1
    Your path should be matched to your context param in web.xml file <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/file-watcher.xml</param-value> Commented Aug 23, 2013 at 13:58
  • Thanks, I've done this but I still have the error...Any other ideas? Commented Aug 23, 2013 at 14:05

2 Answers 2

2

Create the spring named folder under WEB-INF.

Create the file-watcher.xml file inside the spring folder.

After that your path will be

yourproject\src\main\webapp\WEB-INF\spring\file-watcher.xml

Paste the below XML content to file-watcher.xml

  <?xml version="1.0" encoding="UTF-8"?>
   <beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
       default-autowire="byName">

     <bean id="FileWatcher" class="com.test.FileWatcher" init-method="initialize" />

   </beans>

Then run your server. It will work.

Sign up to request clarification or add additional context in comments.

12 Comments

Hi there, Thanks for the help. I'm still getting the Error code 500. Any idea why the spring folder isn't generated automatically? I have to keep adding it to the target/WEB-INF directory after every maven clean install
Please place like this user-management\src\main\webapp\WEB-INF\spring\file-watcher.xml. user-management is my project root path. Don't place any resources with in target folder that will destroyed if you run mvn clean.
That works fine, but still an error code 500. The folder ends up here : ...\FileSystem\target\watchFileSystem-0.0.1-SNAPSHOT\WEB-INF\spring
Thats okay maven will copy the resources and other stuff to target folder. Are you getting any exception. if yes post here
Its path problem I am sure about it. see the IOException and nested exception is FileNotFoundException ....... IOException parsing XML document from class path resource [spring/file-watcher.xml]; nested exception is java.io.FileNotFoundException: class path resource [spring/file-watcher.xml] cannot be opened because it does not exist at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)
|
0

One suggestion i might give you is for you check the location of your file-watcher.xml

If you are using Maven you might want to consider putting your file-watcher.xml inside the resources folder.

And in your web.xml file kindly declare your tag as shown below:

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:file-watcher.xml</param-value>
    </context-param>

NB: Make sure that src/main/java/resources is on your classpath and bear in mind that in Maven, the standard directory for resources is src/main/resources, so I suggest you put this file there.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.