错误描述:
十二月 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包就会一起部署了。