开发自己的淘宝客网站(Tomcat7 spring 2.5 struts2 2.3)的时候,配置spring的log4j日志,死活不能运行,导致项目在tomcat7中运行的时候一直提示错误,版本也更换了几次。
因为刚刚开始的时候担心是不是版本不兼容,后来发现不是这个问题,因为程序org.apache.log4j.PropertyConfigurator就进入不去了,提示source not found。开始怀疑是不是web容器的问题,因为本地测试log4j是没有问题的。
提示source not found。
现在把错误贴出来给大家分享一下心得:
2012-12-15 19:40:01 org.apache.catalina.core.AprLifecycleListener init 信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\jdk\jre6\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\Intel\Services\IPT\;C:\Program Files\ThinkPad\Bluetooth Software\;C:\Program Files\ThinkPad\Bluetooth Software\syswow64;C:\SWTOOLS\ReadyApps;D:\jdk\bin;D:\jdk\jre\bin;C:\Program Files\TortoiseSVN\bin;D:\Program Files (x86)\MySQL\MySQL Server 5.0\bin;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;. 2012-12-15 19:40:01 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:fanjf' did not find a matching property. 2012-12-15 19:40:01 org.apache.coyote.AbstractProtocol init 信息: Initializing ProtocolHandler ["http-bio-8080"] 2012-12-15 19:40:01 org.apache.coyote.AbstractProtocol init 信息: Initializing ProtocolHandler ["ajp-bio-8009"] 2012-12-15 19:40:01 org.apache.catalina.startup.Catalina load 信息: Initialization processed in 930 ms 2012-12-15 19:40:01 org.apache.catalina.core.StandardService startInternal 信息: Starting service Catalina 2012-12-15 19:40:01 org.apache.catalina.core.StandardEngine startInternal 信息: Starting Servlet Engine: Apache Tomcat/7.0.33 2012-12-15 19:40:02 org.apache.catalina.loader.WebappClassLoader validateJarFile 信息: validateJarFile(D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\fanjf\WEB-INF\lib\servlet-4.1.36.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class 2012-12-15 19:40:02 org.apache.catalina.loader.WebappClassLoader validateJarFile 信息: validateJarFile(D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\fanjf\WEB-INF\lib\servlet-api-5.0.16.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class 2012-12-15 19:40:04 org.apache.catalina.core.ApplicationContext log 信息: Set web app root system property: 'webName.root' = [D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\fanjf\] 2012-12-15 19:40:04 org.apache.catalina.core.ApplicationContext log 信息: Initializing log4j from [D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\fanjf\WEB-INF\log4j.properties] 2012-12-15 19:40:08 org.apache.catalina.core.StandardContext listenerStart 严重: Exception sending context initialized event to listener instance of class org.springframework.web.util.Log4jConfigListener java.lang.NoClassDefFoundError: org/apache/log4j/PropertyConfigurator at org.springframework.util.Log4jConfigurer.initLogging(Log4jConfigurer.java:106) at org.springframework.web.util.Log4jWebConfigurer.initLogging(Log4jWebConfigurer.java:144) at org.springframework.web.util.Log4jConfigListener.contextInitialized(Log4jConfigListener.java:47) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4791) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: org.apache.log4j.PropertyConfigurator at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) ... 13 more 21298225 2012-12-15 19:40:09 org.apache.catalina.core.ApplicationContext log 信息: Initializing Spring root WebApplicationContext 2012-12-15 19:40:09 org.springframework.web.context.ContextLoader initWebApplicationContext 信息: Root WebApplicationContext: initialization started 2012-12-15 19:40:09 org.springframework.context.support.AbstractApplicationContext prepareRefresh 信息: Refreshing org.springframework.web.context.support.XmlWebApplicationContext@4d092447: display name [Root WebApplicationContext]; startup date [Sat Dec 15 19:40:09 CST 2012]; root of context hierarchy 2012-12-15 19:40:09 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 信息: Loading XML bean definitions from ServletContext resource [/WEB-INF/classes/com/taobao/www/fanjf/config/applicationContext.xml] 2012-12-15 19:40:09 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 信息: Loading XML bean definitions from ServletContext resource [/WEB-INF/classes/com/taobao/www/fanjf/config/applicationContext-services.xml] 2012-12-15 19:40:09 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory 信息: Bean factory for application context [org.springframework.web.context.support.XmlWebApplicationContext@4d092447]: org.springframework.beans.factory.support.DefaultListableBeanFactory@15c313da 2012-12-15 19:40:09 org.springframework.core.io.support.PropertiesLoaderSupport loadProperties 信息: Loading properties file from class path resource [jdbc.properties] 2012-12-15 19:40:09 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons 信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@15c313da: defining beans [config,dataSource,sqlMapClient,sbookDAO,itemcatDAO,userDAO,fanjfReportMemeberDAO,userInviteDAO,sbookServices,itemcatServices,userServices,userInviteServices,fanjfReportMemeberServices,sbookAction,itemcatAction,userAction,userInviteAction,statusAction,DisplayPayedAction,reportAction,toLogoutAction,searchAction,initAction,transactionManager,org.springframework.aop.config.internalAutoProxyCreator,servicesPointcut,org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0,txAdvice]; root of factory hierarchy 2012-12-15 19:40:09 org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName 信息: Loaded JDBC driver: com.mysql.jdbc.Driver 2012-12-15 19:40:10 org.springframework.web.context.ContextLoader initWebApplicationContext 信息: Root WebApplicationContext: initialization completed in 1610 ms 2012-12-15 19:40:10 org.apache.catalina.core.StandardContext startInternal 严重: Error listenerStart 2012-12-15 19:40:10 org.apache.catalina.core.StandardContext startInternal 严重: Context [/fanjf] startup failed due to previous errors 2012-12-15 19:40:10 org.apache.catalina.core.ApplicationContext log 信息: Closing Spring root WebApplicationContext 2012-12-15 19:40:10 org.springframework.context.support.AbstractApplicationContext doClose 信息: Closing org.springframework.web.context.support.XmlWebApplicationContext@4d092447: display name [Root WebApplicationContext]; startup date [Sat Dec 15 19:40:09 CST 2012]; root of context hierarchy 2012-12-15 19:40:10 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons 信息: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@15c313da: defining beans [config,dataSource,sqlMapClient,sbookDAO,itemcatDAO,userDAO,fanjfReportMemeberDAO,userInviteDAO,sbookServices,itemcatServices,userServices,userInviteServices,fanjfReportMemeberServices,sbookAction,itemcatAction,userAction,userInviteAction,statusAction,DisplayPayedAction,reportAction,toLogoutAction,searchAction,initAction,transactionManager,org.springframework.aop.config.internalAutoProxyCreator,servicesPointcut,org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0,txAdvice]; root of factory hierarchy 2012-12-15 19:40:10 org.apache.catalina.core.ApplicationContext log 信息: Shutting down log4j 2012-12-15 19:40:10 org.apache.catalina.core.StandardContext listenerStop 严重: Exception sending context destroyed event to listener instance of class org.springframework.web.util.Log4jConfigListener java.lang.NoClassDefFoundError: org/apache/log4j/LogManager at org.springframework.util.Log4jConfigurer.shutdownLogging(Log4jConfigurer.java:117) at org.springframework.web.util.Log4jWebConfigurer.shutdownLogging(Log4jWebConfigurer.java:170) at org.springframework.web.util.Log4jConfigListener.contextDestroyed(Log4jConfigListener.java:51) at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4831) at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5478) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: org.apache.log4j.LogManager at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) ... 14 more 2012-12-15 19:40:10 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc 严重: The web application [/fanjf] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 2012-12-15 19:40:10 org.apache.coyote.AbstractProtocol start 信息: Starting ProtocolHandler ["http-bio-8080"] 2012-12-15 19:40:10 org.apache.coyote.AbstractProtocol start 信息: Starting ProtocolHandler ["ajp-bio-8009"] 2012-12-15 19:40:10 org.apache.catalina.startup.Catalina start 信息: Server startup in 9190 ms
解决办法:
直接把log4j-1.2.15.jar slf4j-api-1.5.0.jar slf4j-log4j12-1.5.0.jar 拷贝到tomcat根目录的lib下面,问题解决。