[ http://issues.apache.org/jira/browse/LOGGING-45?page=all ]
Dennis Lundberg resolved LOGGING-45. ------------------------------------ Resolution: Fixed > Default LogFactory Implementation fails for Log4J : ClassCastException > ---------------------------------------------------------------------- > > Key: LOGGING-45 > URL: http://issues.apache.org/jira/browse/LOGGING-45 > Project: Commons Logging > Issue Type: Bug > Affects Versions: 1.0 > Environment: Operating System: other > Platform: Other > Reporter: Jerome Jacobsen > > I've got Log4J 1.1.3 JAR in my classpath. Upon startup of my application > (actually a JUnit test case), I immediately get: > java.lang.ExceptionInInitializerError: > org.apache.commons.logging.LogConfigurationException: > java.lang.ClassCastException > So I downloaded the Commons Logging 1.0 source and debugged. The problem is > in > org.apache.commons.logging.impl.LogFactoryImpl.guessConfig(). > Class proxyClass=findClassLoader(). > loadClass( "org.apache.commons.logging.Log4jFactory" ); > The above loadClass call should be changed to: > Class proxyClass=findClassLoader(). > loadClass( "org.apache.commons.logging.impl.Log4jFactory" ); > However, after I make the above change I still get a ClassCastException, now > from org.apache.commons.logging.LogFactory.newFactory(). This exception > baffles me. It happens at: > return (LogFactory) clazz.newInstance(); > So I modify newFactory() to do the newInstance() and the return in two steps > instead of one. > Object result = clazz.newInstance(); > return (LogFactory)result; > The exception occurs during the cast of result. If I print result's class > name > I get org.apache.commons.logging.impl.LogFactoryImpl. But checking if result > is an instanceof org.apache.commons.logging.impl.LogFactoryImpl returns false. > Object result = clazz.newInstance(); > System.out.println("Got Factory: " + result.getClass().getName()); > if (result instanceof LogFactory) { > System.out.println("result is a LogFactory"); > } > if (result instanceof org.apache.commons.logging.impl.LogFactoryImpl) { > System.out.println("result is a LogFactoryImpl"); > } > return (LogFactory) result; > The code above just prints: > Got Factory: org.apache.commons.logging.impl.LogFactoryImpl > And then throws the ClassCastException. I'm confused. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]