Hi,
newFactory() use thread context classloader to load class. It is like
clazz = classLoader.loadClass(factoryClass);
return (LogFactory) clazz.newInstance();
where classLoader is thread context loader. I am confused with java's classloader's
mechanism. Does this problem have anything to do with namespace? It should be no.
Isn't?
Another mail said this problem is just like anothe problem rasing ClassNotFound
Exception. Could any detail explanation be provided? Thank you.
Regards,
Rice
"Juozas Baliuka" <[EMAIL PROTECTED]> wrote:
>Sorry,
>"MyCass obj = (MyCass)Class.forName(MyCass.class.getName());"
>----- Original Message -----
>From: "Juozas Baliuka" <[EMAIL PROTECTED]>
>To: "Jakarta Commons Developers List" <[EMAIL PROTECTED]>
>Sent: Wednesday, May 01, 2002 9:49 PM
>Subject: Re: ClassCastException raised in newFactory() method when starting
>from JUnit test
>
>
>> Hi,
>> I am not sure about "newFactory()", but in the most problem is like this:
>>
>> � MyCass obj = Class.forName(MyCass.class.getName());
>>
>> This allways throws ClassCastException if this code is loaded not by
>> "SystemClassLoader".
>> In this case we have two diferent classes, the same name but not
>> ClassLoader.
>>
>> This is OK:
>> MyCass obj = Class.forName(MyCass.class.getName(),true,
>> MyCass.class.getClassLoader() );
>>
>> Both classes have the same name and ClassLoader.
>>
>> if "newFactory()" doe's "Class.forName" it must have alternatyve:
>> "newFactory(ClassLoader cl)" and use "cl" as parameter in "Class.forName".
>>
>>
>>
>>
>> ----- Original Message -----
>> From: "Rice Yeh" <[EMAIL PROTECTED]>
>> To: ""Jakarta Commons Developers List"" <[EMAIL PROTECTED]>
>> Sent: Wednesday, May 01, 2002 2:48 PM
>> Subject: RE: ClassCastException raised in newFactory() method when
>starting
>> from JUnit test
>>
>>
>> > Hi,
>> > � Sorry, I past wrong attachement. The original one will not cause this
>> problem. I attache a new one, which just moves
>> >
>> > � � � � Digester d = new Digester();
>> > � � � � System.out.println("OK");
>> > to testLogging() method.
>> >
>> > Regards,
>> > Rice
>> >
>> > [EMAIL PROTECTED] (Rice Yeh) wrote:
>> >
>> > >Hi all,
>> > >
>> > > Just wonder why ClassCastException is raised at line 496 of LogFactory
>> in newFactory() method when running as a JUnit test? I found this problem
>> when running RequiredNameTest in commons-validator. When casting a class
>to
>> some superclass, does classloader from other thread form a namespace and
>so
>> can NOT cast it? Java language spec seems not regulate this. I have proven
>> this with a small program.
>> > > Attached are JUnit test files I use to study this problem.
>> > >
>> > >Regards,
>> > >Rice
>> > >
>> > >
>> > >__________________________________________________________________
>> > >Your favorite stores, helpful shopping tools and great gift ideas.
>> Experience the convenience of buying online with Shop@Netscape!
>> http://shopnow.netscape.com/
>> > >
>> > >Get your own FREE, personal Netscape Mail account today at
>> http://webmail.netscape.com/
>> > >
>> >
>> >
>> > __________________________________________________________________
>> > Your favorite stores, helpful shopping tools and great gift ideas.
>> Experience the convenience of buying online with Shop@Netscape!
>> http://shopnow.netscape.com/
>> >
>> > Get your own FREE, personal Netscape Mail account today at
>> http://webmail.netscape.com/
>> >
>>
>>
>> --------------------------------------------------------------------------
>--
>> ----
>>
>>
>> > /*
>> > �* TestSuite.java
>> > �* JUnit based test
>> > �*
>> > �* Created on May 1, 2002, 7:38 PM
>> > �*/
>> >
>> > package test;
>> >
>> > import junit.framework.*;
>> > import org.apache.commons.digester.Digester;
>> >
>> > /**
>> > �*
>> > �* @author Rice Yeh
>> > �*/
>> > public class LoggingFromDigestTest extends TestCase
>> > {
>> >
>> > � � public LoggingFromDigestTest(java.lang.String testName)
>> > � � {
>> > � � � � super(testName);
>> > � � }
>> >
>> > � � public static void main(java.lang.String[] args)
>> > � � {
>> >
>> >
>> > � � � � junit.swingui.TestRunner.run(suite());
>> > � � }
>> >
>> > � � public void setUp()
>> > � � {
>> >
>> > � � }
>> >
>> >
>> >
>> > � � public static Test suite()
>> > � � {
>> > � � � � TestSuite suite = new TestSuite(LoggingFromDigestTest.class);
>> >
>> > � � � � return suite;
>> > � � }
>> >
>> > � � public void testLogging()
>> > � � {
>> > � � � � Digester d = new Digester();
>> > � � � � System.out.println("OK");
>> > � � }
>> >
>> > � � public void tearDown()
>> > � � {
>> > � � }
>> > }
>> >
>> >
>>
>>
>> --------------------------------------------------------------------------
>--
>> ----
>>
>>
>> > --
>> > To unsubscribe, e-mail:
>> <mailto:[EMAIL PROTECTED]>
>> > For additional commands, e-mail:
>> <mailto:[EMAIL PROTECTED]>
>>
>>
>> --
>> To unsubscribe, e-mail:
><mailto:[EMAIL PROTECTED]>
>> For additional commands, e-mail:
><mailto:[EMAIL PROTECTED]>
>>
>
>
>--
>To unsubscribe, e-mail: � <mailto:[EMAIL PROTECTED]>
>For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
>
__________________________________________________________________
Your favorite stores, helpful shopping tools and great gift ideas. Experience the
convenience of buying online with Shop@Netscape! http://shopnow.netscape.com/
Get your own FREE, personal Netscape Mail account today at http://webmail.netscape.com/
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>