maven的web项目部署到tomcat,项目lib文件夹下jar包下载缺失导致项目启动失败

web项目部署到tomcat,启动出现下面错误:

严重: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/platform-admin]]
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
 at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:672)
 at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1859)
 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
 at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
 at java.util.concurrent.FutureTask.run(FutureTask.java:138)
 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
 at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NoClassDefFoundError: Lorg/slf4j/Logger;
 at java.lang.Class.getDeclaredFields0(Native Method)
 at java.lang.Class.privateGetDeclaredFields(Class.java:2300)
 at java.lang.Class.getDeclaredFields(Class.java:1745)
 at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)
 at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:270)
 at org.apache.catalina.startup.WebAnnotationSet.loadApplicationListenerAnnotations(WebAnnotationSet.java:89)
 at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:63)
 at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:415)
 at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:892)
 at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifec.....................................

***出现问题的原因是:jar包下载不全。没有maven依赖。

*** 问题排查:

首先通过maven的web项目通过右键选择 run as==> maven build 打成war包成功。查看war包中lib文件夹下jar是完整的。

但是通过tomcat部署项目后,启动tomcat报错。并且tomcat的webapps文件夹下项目中的lib只有几个,下载不完整。

得到的结论是:maven的web项目通过maven打war包成功,但是部署到tomcat上web项目的lib下jar包下载缺失导致tomcat启动项目失败。出现上面的问题。

*** 解决的方法是 选中项目右键选择properties 打开窗口 查看Deployment Assembly 中有没有Maven Dependencies  如果没有。就是项目缺少maven依赖导致jar包下载不全,需要配置Maven Dependencies。有的版本的eclipse在配置好maven仓库后,会自动为项目添加maven依赖。但是我的eclipse没有。

选中项目右键选择properties 打开窗口如下:

maven的web项目部署到tomcat,项目lib文件夹下jar包下载缺失导致项目启动失败

maven的web项目部署到tomcat,项目lib文件夹下jar包下载缺失导致项目启动失败

如果没有就需要加上Maven Dependencies。方法如下:

maven的web项目部署到tomcat,项目lib文件夹下jar包下载缺失导致项目启动失败

点击next 选中Maven Dependencies。依赖就加上了。

maven的web项目部署到tomcat,项目lib文件夹下jar包下载缺失导致项目启动失败

最后点击apply应用就好。

maven的web项目部署到tomcat,项目lib文件夹下jar包下载缺失导致项目启动失败

再次启动 服务就正常了。