我们项目经理把Spring的配置文件放在了WEB-INF下,不让我们改路径,Spring的配置文件的名字是applicationContext.xml,我们这是web项目
    我想用这个方法BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");Tomcat启动时就报错,无论我改成ClassPathXmlApplicationContext("WEB-INF/applicationContext.xml"),ClassPathXmlApplicationContext("/WEB-INF/applicationContext.xml"),
ClassPathXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml"),ClassPathXmlApplicationContext("/WebRoot/WEB-INF/applicationContext.xml"),都报错,
    报的是类似这个错严重: Error configuring application listener of class com.pdics.listener.ReceiveData
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [WEB-INF/applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [WEB-INF/applicationContext.xml] cannot be opened because it does not exist

解决方案 »

  1.   


    ctx = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext_db.xml");.xml明显是文件么,怎么能用ClassPathXmlApplicationContext呢
      

  2.   

    应该是路径不正确。应该先取得应用的路径appPath,然后BeanFactory factory = ClassPathXmlApplicationContext(appPath + "/WEB-INF/applicationContext.xml"), 
      

  3.   

    一般的classPath应该是WEB-INF下的class,所以你在你的classPath下就找不到要找的文件了
      

  4.   

    BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
    里面的参数不是字符串,应该是字符串数组你这样试试看
    BeanFactory factory = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","WebRoot/WEB-INF/applicationContext.xml"});
    多个配置文件加载用英文逗号“,”隔开。
      

  5.   

    是路径的问题 如果你的applicationContext.xml放在了WEB-INF下的话 那不如用相对路径
    即写成
    Resource resource = new ClassPathResource("../applicationContext.xml");
    BeanFactory factory = new XmlBeanFactory(resource);
    应该就可以了
      

  6.   

    是的!5楼 Iris19860111 是正解,java中路径的表示很让人头疼,尤其注意的是程序发布后,指定的文件会被java容器保存在哪里!在java容器找文件很头疼,可是很多应用需要对文件的操作,例如直接读取applicationContext.xml中的参数,感谢清醒的Iris19860111!!!