You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by bu...@apache.org on 2002/06/13 18:26:07 UTC
DO NOT REPLY [Bug 9845] New: -
Default LogFactory Implementation fails for Log4J
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9845>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9845
Default LogFactory Implementation fails for Log4J
Summary: Default LogFactory Implementation fails for Log4J
Product: Commons
Version: 1.0 Final
Platform: Other
OS/Version: Other
Status: NEW
Severity: Normal
Priority: Other
Component: Logging
AssignedTo: commons-dev@jakarta.apache.org
ReportedBy: jerome.jacobsen@gentootech.com
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.
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>