[ 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]