eclipse部署项目出现org.apache.catalina.LifecycleException的解决方案之一

错误描述:

十二月 13, 2013 10:27:15 下午 org.apache.catalina.core.ContainerBase addChildInternal SEVERE: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/huixing]] 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:633) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:657) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1636) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724) Caused by: java.lang.NoClassDefFoundError: Lorg/apache/log4j/Logger; at java.lang.Class.getDeclaredFields0(Native Method) at java.lang.Class.privateGetDeclaredFields(Class.java:2387) at java.lang.Class.getDeclaredFields(Class.java:1796) at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106) at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:261) at org.apache.catalina.startup.WebAnnotationSet.loadApplicationFilterAnnotations(WebAnnotationSet.java:110) at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:66) at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:405) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:881) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5269) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 11 more Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) ... 25 more

像这类错误,博主遇到的就是因为jar包没部署到Tomcat导致的。

博主初学java使用的是myeclipse,不得不说myeclipse功能强大,但博主有强迫症,破解软件用着不是很舒服。所以试着开始用eclipse。

我的项目在myeclipse下是能正常运行的,但换到eclipse下就出现这样的错误,研究了几天终于找出原因所在。

主要的原因就是:

  部署到tomcat的项目所需的jar包没有同时部署!!!!!

平常我们添加jar包是在 Build Path里 添加 External JARs 或者是Maven项目的 Maven Dependencies.

在myeclipse ide中会自动将jar包一起部署到tomcat,但在eclipse中是不会自动部署的,在eclipse中还需要

做以下设置:

 

第一 选择项目属性:

 

第二,选择 Deployment Assembly    点击 Add 添加

注意看,项目部署的目录全在这里,里面没有显示WEB-INF下的lib目录,这说明项目部署的时候是没有lib目录的。

需要添加 ,添加方法就是点击 Add:

选择Java Build Path Entries,点击下一步,将会显示你所添加的jar包。如下:

选择你添加的jar包即可。点击finish。

这样,当你部署项目的时候 JAR包就会一起部署了。

 

posted @ 2013-12-13 23:00  十日十月  阅读(1613)  评论(0编辑  收藏  举报