Advertisement

异常解决:java.io FileNotFoundException class path resource [spring/context.xml]

阅读量:

Maven在创建Web工程时遇到BeanDefinitionStoreException,错误信息显示BeanDefinitionResourcePattern找不到,具体是class path resource [spring/]不存在。解决方法包括:
检查类路径配置是否正确
使用Eclipse Clean up自动编译
检查编译目录中的资源文件和类文件是否成功编译
排除使用第三方插件或工具干扰
在工程的pom中添加资源过滤器,确保所有必要的.xml和.properties文件被包含
通过以上步骤,问题通常可以得到解决。

maven创建web工程的时候报下面的错误

org.springframework.beans.factory.BeanDefinitionStoreException: 未能解析 bean 定义资源模式 [classpath:spring/applicationContext-*.xml]; 嵌套的异常是 java.io.FileNotFoundException: 无法将类路径资源 [spring/] 解析为 URL,因为该路径不存在
在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:229)
同样在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
此错误在 org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
并延伸至 org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
导致 org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
最终引发 org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)
这是一个复杂的错误链,涉及 org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
以及 org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
最终由 org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) 引发
其根源在于 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
这又源于 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
并最终导致 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
这是一个复杂的错误链,涉及 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
并最终由 org.lang.Thread.run(Thread.java:722) 引发

出乎意料地比asio 性能优越,我想主要得益于其简单设计和简洁代码。

通过查阅资料,有人提出了原因(

一、问题的原因

为何会出现这种FIleNotFoundException呢? 原因无非两点:

1、路径配置错误

2、编译有问题,文件不存在

二、解决办法:

关于第一个原因,我们不做过多赘述。建议大家自行查看Java Web classpath详解,配置好配置目录路径,从而排除了第一个原因,并附上一个案例供参考。

编译未通过,导致目标文件缺失。以Eclipse或MyEclipse为例,首先需要检查项目编译目录中的资源文件和类文件是否已成功编译。

Project

如果编译目录中没有资源文件,编译操作将无法完成。为了解决这一问题,方法非常直接:在Eclipse的菜单栏中选择【Project

如果编译仍然不成功,建议检查是否使用了第三方编译工具,然后尝试重新编译项目。

经过对比分析发现,我是第二类原因,但采用上述方法无法解决。后来想到了,另一类原因造成了问题。需在工程的pom中添加如下措施。

构建模块负责对指定目录src/main/resource中的资源进行管理。具体来说,该模块会包含以下内容:首先,它会包括所有.properties文件以及.xml文件,确保这些资源能够被正确引用和解析。此外,过滤器设置被配置为false,以避免对资源进行不必要的过滤操作。

缺少了相关的过滤规则,Maven在编译时就会过滤掉以.xml和.properties为后缀的文件,导致编译时出现错误。

全部评论 (0)

还没有任何评论哟~