通常,在刚开始参与一个项目的时候,需要将子模块部署到tomcat运行,这时候由于项目本身或tomcat设置问题会导致一系列的报错,比较常见的就有项目初始化失败的报错,一般提示为:Failed to start component [StandardEngine[Catalina]] [localhost/项目名称],本篇来聊一下引发这个问题的几个常见原因。
server.xml配置不一致
在Eclipse中配置tomcat后,会创建一个新的server,相关配置则直接复制你所配置的tomcat,借此实现tomcat的单机实例化,每个server都可以当做一个独立的tomcat运行,内部的个性化配置互不影响。但实际情况中,Eclipse每次启动一个server,都会根据当前server的xml配置去刷新tomcat/conf下的xml配置,那么在有单独启动tomcat的需求下,只能每次手动配置。解决方法就是,进入eclipse双击server配置将其中server option中的 publish model contexts to separate XML files 勾选上即可。避免xml间强制统一或因为手动删除应用造成的初始化失败。
jar包缺失
如果报错信息中出现 Java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener,基本就代表你的项目中缺失jar包,比较常见的是Servlet相关jar包,解决方式直接右击项目properties找到Target Runtime,选择所在的Tomcat Server就可以了。原因是,项目从svn或git或复制过来的时候,引用的lib只有项目本身的,而没有Tomcat Server的相关jar包,那么就只能手动添加上。所以,第二种解决方式,选择project build path添加server lib也可以解决。
内存溢出或超时
超时(timeout)就是指项目初始化的时间已经超过默认值,在多模块或复杂项目运行的时候是一个常见问题,双击server将timeout值设置为10000或任意大的值,超过项目成功初始化时间就可以。
内存溢出(OutOfMemoryError: Java heap space)的解决方式就是调大当前server的jvm参数,造成原因,结合我的项目来说,就是出于先期架构与业务体量问题初始化了大量对象吧。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。