3

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

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

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

违规资源: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" />

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

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

我一直在寻找解决方案,突然它在重新启动 Eclipse 并构建后再次工作,而 Eclipse 仍在更新索引,而我的项目处于这种奇怪的状态Hg status pending而不是default。对此结果感到惊讶,我决定在重新启动 Eclipse 后再次构建我的项目,但我再次遇到错误,我启用以使其再次工作。这很烦人...

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

非常感谢你的帮助 :)

4

2 回答 2

3

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

  • 网络应用
    • WEB-INF/classes/applicationContext.xml
    • WEB-INF/lib/nad-core-0.0.1-SNAPSHOT.jar/applicationContext-core.xml

应用程序 context.xml 是指使用 import 标记的 applicationContext-core.xml 文件。我确实在我的 Web 应用程序中遇到了类似的情况,这里是您应该通过的检查列表,可能其中之一可以适用于您的情况。

  1. 检查生成的快照 jar 文件中的 applicationContext-core.xml 文件,并确保它位于 jar 的根目录中。听起来很傻,但这是我在部署中遇到问题的根本原因。
  2. 确保您的 Maven Pom.xml 文件配置为包含资源文件夹中的此 XML 文件。您可以在 Maven 的构建阶段使用资源标签将它们打包到 jar 文件本身中。
  3. 您可以尝试从 application context.xml 文件中删除 import 标记,而是从 Spring 的 webapplication 上下文本身加载它们。
    1. 从 spring 添加上下文加载器侦听器类org.springframework.web.context.ContextLoaderListener
    2. 添加 context-param contextConfigLocationclasspath:applicationContext-core.xml,classpath:applicationContext.xml。Spring 具有在启动 bean factory之前动态整理依赖关系的能力。

希望这份清单有所帮助。

于 2013-07-23T11:36:57.890 回答
0

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

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

于 2019-11-04T16:26:00.040 回答