commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dennis Lundberg (JIRA)" <j...@apache.org>
Subject [jira] Reopened: (LOGGING-45) Default LogFactory Implementation fails for Log4J : ClassCastException
Date Sat, 18 Nov 2006 12:46:44 GMT
     [ http://issues.apache.org/jira/browse/LOGGING-45?page=all ]

Dennis Lundberg reopened LOGGING-45:
------------------------------------

             

> 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: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message