SSM框架异常问题

SSM框架web.xml中配置核心控制器时加载不到springmvc.xml的问题


异常信息:
java.io.FileNotFoundException: class path resource [spring/springmvc.xml] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:158)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:329)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:216)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:187)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:540)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:454)
at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:643)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:606)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:657)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:525)
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:466)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1227)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1140)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1027)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5038)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5348)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase S t a r t C h i l d . c a l l ( C o n t a i n e r B a s e . j a v a : 1407 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . C o n t a i n e r B a s e StartChild.call(ContainerBase.java:1397)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)


项目结构:
这里写图片描述
从图片中可以看到一个resource和一个resources文件夹,两者内容是一样的(为了重现异常将resource文文件夹中的springmvc.xml改变了位置),但resources文件夹是我拷贝进来的(如果创建的是folder出现的位置也是一样的)

再看web.xml中的配置:
这里写图片描述
按理说这个文件的路径是没有问题的,但是死活加载不到springmvc.xml的配置文件,在网上找了很多处理方式,但是没什么结果,因为这个路径表面上看来是没有什么问题的,包括在工作空间中的结构:
这里写图片描述
resource和resources这两个文件夹的位置都是在根目录上面,貌似classpath是可以加载到这里的文件的,但是实际上没有,但是区别来了,注意上面的图片中有个”.classpath”的文件,打开它:
这里写图片描述
在所有的classpathentry标签中可以看到在.classpath文件中并没有存在resources这个文件夹的引用,而存在的resource文件夹是用eclipse中的Source Folder创建出来的资源文件夹(但此时resource文件夹里面人为的去掉了springmvc.xml配置文件),所以如果没有这样创建的话也没有<classpathentry kind="src" path="resource"/>这行代码,那么classpath就会默认去src下寻找配置中路径,因此造成该异常的原因应该是:复制进来的文件夹和Folder创建的文件夹效果是一样的,在进行编译的时候不会将这种类型的文件夹作为资源文件夹路径引入到.classpath中去,因此在通过classpath:spring/springmvc.xml加载时,在.classpath中找不到这个引用所以就会报错
如有错误,敬请指正

猜你喜欢

转载自blog.csdn.net/qq_41511827/article/details/80211205