Hello, Have you considered trying SLF4J? The least invasive scenario would be to replace commons-logging.jar with jcl104-over-slf4j-1.4.2.jar, slf4j-api-1.4.2.jar and slf4j-log4j12-1.4.2.jar - so you'll have Log4j with SLF4J and SLF4J-faking-Commons-Logging, no code changes required. I'm not sure if it will help, but SLF4J was designed specifically to avoid classloader problems.
Greetings, Lilianne E. Blaze Jon Friis wrote: > Hello > > I have a problem with log4j and commons-logging which i really hope anybody > can help me with. > > Setup: > Windows 2000, Apache Tomcat 6.0, JRE 1.6.0_02, log4j-1.2.15, commons-logging > annd i am using eclipse 3.3.0 > > Since i have multiple Web services on the same Tomcat server i have been > putting log4j.jar in WEB-INF/lib and log4j.properties in WEB-INF/classes. > > My problem is some kind of class-loading problem where log4j and > commons-logging won't find each other. > > 2 scenarios: > > 1) commons-logging.jar and log4j.jar are both put in WEB-INF/lib for my > webapp. > > 2) commons-logging.jar is put in tomcat 6.0/lib (Common classloader according > to tomcat 6.0 doc) and log4j.jar in WEB-INF/lib. > > The stacktraces of both scenarios are given below. > > Question is: Why can't they see each other and how can i solve the problem ? > > Can it really be so that i have to wrap the log4j class (as describe in the > log4j book) and can someone explain why and will it help ? > > Any feed back or solution hints are really appreciated :-) > > Thx > Jon Friis > > Scenario 1) > -------------------------------------------------- > > 25-10-2007 16:47:24 org.apache.catalina.core.StandardContext loadOnStartup > SEVERE: Servlet /FAS threw load() exception > java.lang.NoClassDefFoundError: org.apache.commons.logging.LogFactory > at > org.apache.axis.components.logger.LogFactory.class$(LogFactory.java:45) > at > org.apache.axis.components.logger.LogFactory$1.run(LogFactory.java:45) > at java.security.AccessController.doPrivileged(Native Method) > at > org.apache.axis.components.logger.LogFactory.getLogFactory(LogFactory.java:41) > at > org.apache.axis.components.logger.LogFactory.<clinit>(LogFactory.java:33) > at > org.apache.axis.transport.http.AxisServlet.<clinit>(AxisServlet.java:75) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:169) > at > org.apache.axis.transport.http.AxisServletBase.class$(AxisServletBase.java:59) > at > org.apache.axis.transport.http.AxisServletBase.<clinit>(AxisServletBase.java:58) > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) > at java.lang.reflect.Constructor.newInstance(Constructor.java:513) > at java.lang.Class.newInstance0(Class.java:355) > at java.lang.Class.newInstance(Class.java:308) > at > org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1104) > at > org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) > at > org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4042) > at > org.apache.catalina.core.StandardContext.start(StandardContext.java:4348) > at > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) > at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) > at > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) > at > org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) > at > org.apache.catalina.core.StandardService.start(StandardService.java:516) > at > org.apache.catalina.core.StandardServer.start(StandardServer.java:710) > at org.apache.catalina.startup.Catalina.start(Catalina.java:566) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) > at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) > 25-10-2007 16:47:25 org.apache.coyote.http11.Http11Protocol start > INFO: Starting Coyote HTTP/1.1 on http-8080 > > Scenario 2) > -------------------------------------------------- > > java.lang.NoClassDefFoundError: org/apache/log4j/Category > at java.lang.Class.getDeclaredConstructors0(Native Method) > at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) > at java.lang.Class.getConstructor0(Class.java:2699) > at java.lang.Class.getConstructor(Class.java:1657) > at > org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:410) > at > org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:529) > at > org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:235) > at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:370) > at > org.apache.axis.components.logger.LogFactory.getLog(LogFactory.java:37) > at > org.apache.axis.transport.http.AxisServlet.<clinit>(AxisServlet.java:75) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:169) > at > org.apache.axis.transport.http.AxisServletBase.class$(AxisServletBase.java:59) > at > org.apache.axis.transport.http.AxisServletBase.<clinit>(AxisServletBase.java:58) > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) > at java.lang.reflect.Constructor.newInstance(Constructor.java:513) > at java.lang.Class.newInstance0(Class.java:355) > at java.lang.Class.newInstance(Class.java:308) > at > org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1104) > at > org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) > at > org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4042) > at > org.apache.catalina.core.StandardContext.start(StandardContext.java:4348) > at > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) > at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) > at > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) > at > org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) > at > org.apache.catalina.core.StandardService.start(StandardService.java:516) > at > org.apache.catalina.core.StandardServer.start(StandardServer.java:710) > at org.apache.catalina.startup.Catalina.start(Catalina.java:566) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) > at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) > 25-10-2007 17:02:14 org.apache.coyote.http11.Http11Protocol start > INFO: Starting Coyote HTTP/1.1 on http-8080 > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
