Context initialization failed org.springframework.beans.factory.BeanDefinitionStoreException: IOExc

        最近在进行中的基于RESTful框架的APP项目中一直在包题目中的那个错误,具体的错误描述如下:


严重: Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [springmvc.xml]; nested exception is java.io.FileNotFoundException: class path resource [springmvc.xml] cannot be opened because it does not exist
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:344)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
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:542)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:454)
at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:624)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:672)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:543)
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484)
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:1282)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1195)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1085)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5318)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5610)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1260)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:2002)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.FileNotFoundException: class path resource [springmvc.xml] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:330)


           根据错误提示,内容初始化失败。从网上查阅资料是因为缺少jar包,可是跟能够正常运行的项目进行对比发现jar包都是存在的。经历了几次重构后发现,在tomcat的webapp缺少了两个文件:

           

       原来tomcat添加工程以后就会执行编译,生成的文件放到tomcat的webapp目录下,可是有些文件却不能被编译进入该文件夹下,造成文件缺失。突然想起VS发布系统过程中一些图片和js等都不会被导入到待发布的文件夹内部,还需要手动添加是一个道理。

       但为什么这些文件会丢失,如何保证项目添加时不会丢失,还需要在以后的工作学习中解决才行。


       问题的根本原因是自己对tomcat服务器运行程序的机制不了解造成的,于是科普了一下tomcat的文件目录:

                           

       (1)bin目录存放的是tomcat执行命令,另外还有很多环境变量存在此处。最常用的是startup.bat用于启动tomcat、shutdown.bat用于关闭。catalina用于设置tomcat内存。

       (2)conf存放tomcat配置文件,例如通过sever.xml可以修改端口号、设置域名和IP、默认加载项目和编码等。

       (3)lib存放tomcat运行需要加载的jar包。

       (4)logs是运行过程中产生的日志文件。

       (5)temp目录用户存放tomcat是运行是产生的临时文件

       (6)webapps存放添加进入tomcat文件中的程序,它会随着在myeclipse中给tomcat添加的程序一致。但事实证明,它并不会跟Myeclipse存放的文件结构一模一样。

       (7)work存放tomcat运行时编译的文件,清空它可达到清除缓存作用。

        我们在代码调试过程中经常会遇到一些改正的错误没有显示想要的效果,或者报如下错误:

                  严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener 
                  java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 

       

        这时候我们通过清除缓存就能奏效。


          总结:

         解决问题的过程可能是漫长也可能是痛苦的,但如果联系我们之前遇到错误的经验进行对比推测,可能会加快我们解决bug的步伐。


评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值