未找到 applicationContext 类路径

Posted

技术标签:

【中文标题】未找到 applicationContext 类路径【英文标题】:applicationContext classpath not found 【发布时间】:2013-04-02 21:42:42 【问题描述】:

出于某种原因(shiro 过滤器),我将应用程序上下文文件保存在 WEB-INF 文件夹中。当我运行 tomcat 时一切正常,但是当我尝试使用以下方法从控制器获取应用程序上下文时:

context = new ClassPathXmlApplicationContext(fileContext);

我总是收到这个异常:

IOException parsing XML document from class path resource [applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist

似乎在 ecplise 下我无法在类路径下包含 WEB-INF。我在***中查看了很多问题,但我还没有找到解决方案。

如果我将 applicationContext.xml 文件移动到 src/main/java 文件夹下,我可以获取上下文,但是定义到 web.xml 文件中的 shiro 文件无法看到在 applicationContext 文件下定义的 shiro bean (我仔细检查过,bean 工作正常)。如何告诉 web.xml 从 src/main/java 获取内容?或者,我怎样才能到达 applicationContext.xml

【问题讨论】:

为什么要从控制器内部创建一个new ApplicationContext?改为自动装配现有的。 尝试使用 @Autowired 私有静态 ApplicationContext 上下文;但它始终为空。 试试这个:***.com/questions/4914012/…。另外,不要让它成为静态的。 【参考方案1】:

WEB-INF 不在您的 CLASSPATH 中。 WEB-INF/classes 是。那么为什么不将它放在源文件夹中并打包应用程序呢?

【讨论】:

过滤器定义 web.xml 出现问题。正在寻找WEB-INF下的applicationContext。 好的,我将 applicationContext.xml 移到了 WEB-INF/classes 下,它工作正常,但我无法在我的 applicationContext 中包含任何文件。我绝对需要包含 ehcache.xml,并且不可能将它嵌入到 applicationContext 下。 这应该是直截了当的。在放置应用程序上下文 xml 的同一位置添加 ehcache xml。请参阅表示此 ./ehcache.xmlorg.hibernate.cache.ehcache.SingletonEhCacheRegionFactory【参考方案2】:

不要在控制器中创建ApplicationContext 的实例。春天DispatcherServlet 已经为你创造了一个。您需要做的就是使用 @Autowired 访问应用程序上下文文件中的所有 bean 声明。

【讨论】:

【参考方案3】:

使用

context = new FileSystemXmlApplicationContext(fileContext);

而不是

context = new ClassPathXmlApplicationContext(fileContext);

【讨论】:

同样的问题,它开始从绝对 url 读取(与 Eclipse 相同),我无法访问项目文件夹。【参考方案4】:

问题已解决,移动 WEB-INF/classes 下的所有配置文件并添加前缀 classpath:

<import resource="classpath:spring-data.xml"/> 

感谢大家的帮助!我真的很感激!

干杯,安德里亚

【讨论】:

以上是关于未找到 applicationContext 类路径的主要内容,如果未能解决你的问题,请参考以下文章

Spring 如何在 Struts 动作中注入未在 applicationContext.xml 中定义的属性

如何在 Spring applicationContext.xml 中读取 JVM 参数

eclipse中Spring创建applicationContext.xml后程序却找不到该文件

IDEA找不到配置文件cannot resolve file applicationContext.xml

SpringBoot单元测试运行时报错:Failed to load ApplicationContext

SpringBoot单元测试运行时报错:Failed to load ApplicationContext