当前位置: 代码迷 >> J2EE >> FileSystemXmlApplicationContext找不到applicationContext.xml的有关问题
  详细解决方案

FileSystemXmlApplicationContext找不到applicationContext.xml的有关问题

热度:56   发布时间:2016-04-17 23:28:23.0
FileSystemXmlApplicationContext找不到applicationContext.xml的问题
这段代码我直接写在main函数下,不启动TOMCAT,那么执行没问题。
ApplicationContext factory = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml");

但是我启动TOMCAT后,通过WEB应用访问这段代码(比如通过监听定时或者SERVLER)为什么报错系统找不到指定的路径错误
Exception in thread "Timer-1" org.springframework.beans.factory.BeanDefinitionStoreExceptionIOException 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 试下,
------解决思路----------------------
引用:
FileSystemXmlApplicationContext只有写上全路径才可以,但部署时全路径是不行的。
如果用ClassPathXmlApplicationContext 只能读classes目录下,
但我的配置文件在WEB-INF下,到底该怎么访问才行啊 

Quote: 引用:

web项目要发布到服务器中才能访问啊!所以程序要在TOMCAT下找applicationContext.xml!


我是这么配置TOMCAT的
<Service name="DbService">
      
    。。。。。  
  
    <Engine name="DbService" defaultHost="localhost">  
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"  resourceName="UserDatabase"/>  
      <Host name="localhost" appBase="DbService"   unpackWARs="true" autoDeploy="true"   xmlValidation="false" xmlNamespaceAware="false">   
<Context path="/" docBase="D:/Workspaces/DbService/WebRoot/" debug="0" reloadable="true"/>
      </Host> 
    </Engine> 
  
</Service> 

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加载!把配置文件拷到源文件目录下!
  相关解决方案