无法从URL位置导入bean定义[classpath:applicationContext-core.xml]

时间:2013-07-23 10:09:28

标签: java eclipse spring tomcat

我正在使用Maven在Eclipse上运行Spring项目,并在Tomcat服务器v6.0上运行。从昨天早上起,一切都运转正常。

这是他的问题:我正在构建我的项目,我获得了成功。然后我启动我的Tomcat服务器并收到此错误:

  

org.springframework.beans.factory.parsing。 BeanDefinitionParsingException :配置问题:无法从URL位置导入bean定义 [classpath:applicationContext-core.xml] < / p>      

攻击资源:ServletContext资源[/WEB-INF/applicationContext.xml];嵌套异常是org.springframework.beans.factory。 BeanDefinitionStoreException :IOException从类路径资源[applicationContext-core.xml]解析XML文档;嵌套异常是java.io。 FileNotFoundException :无法打开类路径资源[applicationContext-core.xml],因为它不存在

我在一些网站上发现了类似的问题,但没有一个给我一个适合我的解决方案。

当我这样做时,似乎eclipse无法找到applicationContext-core.xml:

<import resource="classpath:applicationContext-core.xml" />

但是,我确实在WEB-INF / lib中包含了applicationContext-core.xml所需的jar文件nad-core-0.0.1-SNAPSHOT.jar。

我甚至尝试将其手动添加到类路径中,但我仍然遇到同样的问题。

我一直在寻找一个解决方案,当重新启动Eclipse并在Eclipse仍在更新索引时构建时,它仍然可以再次工作,而我的项目正处于这种奇怪的状态 Hg status pending 而不是默认即可。对于这个结果感到惊讶,我决定在重新启动Eclipse之后再次构建我的项目,然后我再次收到错误,并且我再次启用它。这很烦人......

这看起来是一个非常随机的问题。

非常感谢您的帮助:)

2 个答案:

答案 0 :(得分:3)

因为您没有指定Web应用程序结构。我假设您手头有一个简单的Web应用程序,具有以下结构

  • web应用
    • WEB-INF / classes / applicationContext.xml
    • WEB-INF / LIB / NAD-芯0.0.1-SNAPSHOT.jar /的applicationContext-core.xml

Application context.xml使用import标记引用applicationContext-core.xml文件。我确实在我的网络应用程序中遇到了类似的情况,这里是您应该检查的检查清单,可能其中一个可以适用于您的情况。

  1. 检查生成的快照jar文件以查找applicationContext-core.xml文件,并确保它位于jar的根目录中。听起来很傻,这是我在部署中遇到的问题的根本原因。
  2. 确保将Maven Pom.xml文件配置为包含resources文件夹中的此XML文件。您可以在Maven的构建阶段使用资源标记将它们打包在jar文件本身中。
  3. 您可以尝试从应用程序context.xml文件中删除导入标记,而是从Spring的Web应用程序上下文本身加载它们。
    1. 从spring org.springframework.web.context.ContextLoaderListener
    2. 添加上下文加载程序侦听器类
    3. 使用值类路径添加context-param contextConfigLocation :applicationContext-core.xml,classpath:applicationContext.xml 。 Spring能够在启动bean工厂之前动态地整理依赖关系
  4. 希望此检查清单有所帮助。

答案 1 :(得分:0)

我得到的配置几乎相同,六年后,我遇到了相同的错误。

我还重新启动了Eclipse,它解决了这个问题。