【问题标题】:Spring 3.0 not finding the applicationcontext.xmlSpring 3.0 找不到 applicationcontext.xml
【发布时间】:2012-01-05 16:56:20
【问题描述】:

我正在开发使用数据库存储系统的 Web 应用程序,我选择将 dataAccess-applicationcontext 与其他部分分开。但是,当我运行以下代码行时,它说它不存在。

ApplicationContext ac = new ClassPathXmlApplicationContext("dataAccess-applicationContext.xml", UsageDataDAO.class);

我什至将 xml 文件移动到同一个目录,只是为了得到与下面发布的相同的错误。

嵌套异常为 java.io.FileNotFoundException:类路径资源 [com/foobar/bar/foo/dataAccess-applicationContext.xml] 无法打开,因为它不存在

知道这里发生了什么吗?

【问题讨论】:

  • 文件在哪个目录?包含您的代码行的类在哪个包中?
  • 我已经尝试使用同一目录中的文件、上面的目录、WEB-INF 和应用程序的根目录。这些都不起作用。

标签: java spring servlets


【解决方案1】:

如果没有所有细节,这很难调试,但它必须是两个问题之一。

首先,该文件确实不在您的类路径中。这是一个 Web 应用程序,因此在检查类路径时应考虑 how your particular servlet container works。例如,在servlet环境中,WEB-INF不在classpath中,但WEB-INF/classes在。

其次,该文件位于您的类路径中,但您错误地引用了它。根据您已经提供的信息,我认为情况并非如此,但这种可能性可以在以后扩展。

不管怎样,您为什么要手动加载文件?您应该在 web.xml 中引用配置。如果您提供有关如何运行 Web 应用程序的更多详细信息,那么我们可以在这部分为您提供帮助。同时,这个例子可能是足够的信息。它说明了如何配置由容器中的所有 Servlet 和过滤器共享的根 spring 容器(配置特定的 Servlet 需要稍微不同的方法):

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/config1.xml, /WEB-INF/config2.xml</param-value>
</context-param>

【讨论】:

    【解决方案2】:

    请使用下划线 dataAccess_applicationContext.xml 而不是 dataAccess-applicationContext.xml 编辑您的文件名。然后再试一次。

    【讨论】:

      【解决方案3】:

      尝试使用 classpath*: 前缀。 "classpath*:dataAccess-application-context.xml" 如果它在根类路径中,否则使用 "classpath*:/folderName/dataAccess-application-context.xml"

      【讨论】:

      • 对不起,但这也无助于解决错误。感谢您提供帮助。
      【解决方案4】:

      您的第二个参数:

      ApplicationContext ac = 
          new ClassPathXmlApplicationContext("dataAccess-applicationContext.xml", 
              UsageDataDAO.class);
      

      包括 UsageDataDAO.class。根据这个类的 spring javadoc,这是请求在 com/foobar/bar/foo/ 中开始上下文搜索。

      改为将 dataAccess-applicationContext.xml 放入 WEB-INF/classes 并尝试:

      ApplicationContext ac = 
          new ClassPathXmlApplicationContext("dataAccess-applicationContext.xml");
      UsageDataDAO myDao = (UsageDataDAO) ac.getBean("MyDaoBeanName");
      

      【讨论】:

        猜你喜欢
        • 2011-01-12
        • 1970-01-01
        • 1970-01-01
        • 2023-02-25
        • 2011-08-07
        • 1970-01-01
        • 2010-10-31
        • 2014-05-25
        • 2015-12-19
        相关资源
        最近更新 更多