这段代码我直接写在main函数下,不启动TOMCAT,那么执行没问题。
ApplicationContext factory = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml");
但是我启动TOMCAT后,通过WEB应用访问这段代码(比如通过监听定时或者SERVLER)为什么报错系统找不到指定的路径错误
Exception in thread "Timer-1" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from file [C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin\WebRoot\WEB-INF\applicationContext.xml]; nested exception is java.io.FileNotFoundException: WebRoot\WEB-INF\applicationContext.xml (系统找不到指定的路径。)
为什么在启动TOMCAT后,程序要在TOMCAT下找applicationContext.xml,而不是在我的工程路径下找呢?
注意:如果写绝对路径以上都没问题,但项目要求我们不能写绝对路径
详细错误:Exception in thread "Timer-1" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from file [C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin\WebRoot\WEB-INF\applicationContext.xml]; nested exception is java.io.FileNotFoundException: WebRoot\WEB-INF\applicationContext.xml (系统找不到指定的路径。)
------解决思路----------------------
ApplicationContext factory = new FileSystemXmlApplicationContext(System.getProperty("user.dir") + "/WebRoot/WEB-INF/applicationContext.xml");
------解决思路----------------------
路径改下WebRoot/WEB-INF/applicationContext.xml 改成WEB-INF/applicationContext.xml 试下,
------解决思路----------------------
ApplicationContext factory = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml");
这样写是相对目录!相对的是tomcat的运行目录! 也就是这个目录C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin
那你就看看你的配置文件相对这个目录怎么找!不过要是在项目目录下D:/Workspaces/DbService/WebRoot/的话那就麻烦了得。。。。。。半天!直接把配置文件拷贝到C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin得了
!
或者直接使用ClassPathXmlApplicationContext加载!把配置文件拷到源文件目录下!