Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Equinox » ClassLoader Problem (ClassCastException)?
ClassLoader Problem (ClassCastException)? [message #80718] Thu, 11 January 2007 17:45 Go to next message
Christian Hager is currently offline Christian HagerFriend
Messages: 53
Registered: July 2009
Location: Germany
Member
Hi,

I'm having some difficulties with osgi classloading and I'm hoping
someone here can help me.

I have one class ResultEntry and a class FactorialResult which extends
ResultEntry. Now in one of my bundles I get an resultEntry object which
really is a FactorialTask from another bundle an then I want to
FactorialTask using the following code

FactorialResult fact = (FactorialResult) resultEntry;

Now when I try to do so I get a the following exception.

java.lang.ClassCastException:
org.ac.computegrid.jobs.fibfact.FactorialResult
at
org.ac.computegrid.jobs.fibfact.FibFactJob.addResultEntry(Fi bFactJob.java
:79)
at
org.ac.computegrid.master.GenericMaster$2.run(GenericMaster. java:167)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)

Following this I have also displayed the ClassLoaderTrees as I get them
with this code

ClassLoaderUtil.displayContextClassLoaderTree ();
ClassLoaderUtil.displayClassLoaderTree(FactorialResult.class
..getClassLoader ());
ClassLoaderUtil.displayClassLoaderTree (resultEntry.getClass
().getClassLoader ());
ClassLoaderUtil.displayClassLoaderTree (ResultEntry.class.getClassLoader
());

and here the output


ClassLoader Tree has 3 levels
cl0 -- Boot ClassLoader
|
cl1 -- ClassLoader
org.eclipse.osgi.baseadaptor.BaseAdaptor$ParentClassLoader@1b06041: is
unknown ClassLoader type
|
cl2 -- ClassLoader
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@19422d2: is
unknown ClassLoader type

ClassLoader Tree has 3 levels
cl0 -- Boot ClassLoader
|
cl1 -- ClassLoader
org.eclipse.osgi.baseadaptor.BaseAdaptor$ParentClassLoader@1b06041: is
unknown ClassLoader type
|
cl2 -- ClassLoader
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@467991: is
unknown ClassLoader type

ClassLoader Tree has 4 levels
cl0 -- Boot ClassLoader
|
cl1 -- ClassLoader
org.eclipse.osgi.baseadaptor.BaseAdaptor$ParentClassLoader@1b06041: is
unknown ClassLoader type
|
cl2 -- ClassLoader
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@19422d2: is
unknown ClassLoader type
|
cl3 -- ClassLoader
sun.rmi.server.LoaderHandler$Loader@1174ec5["ahttp://computegrid:computeg
rid@192.168.0.200/codebase/computegrid_jobs.jar"]:
ahttp://computegrid:computegrid@192.168.0.200/codebase/compu tegrid_jobs.j
ar

ClassLoader Tree has 3 levels
cl0 -- Boot ClassLoader
|
cl1 -- ClassLoader
org.eclipse.osgi.baseadaptor.BaseAdaptor$ParentClassLoader@1b06041: is
unknown ClassLoader type
|
cl2 -- ClassLoader
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@19422d2: is
unknown ClassLoader type


Can anyone tell me how to solve this? Ah if it helps the ResultEntry
object comes from a JavaSpace

Thanks for any help

Christian Hager
Re: ClassLoader Problem (ClassCastException)? [message #80802 is a reply to message #80718] Fri, 12 January 2007 08:09 Go to previous message
Christian Hager is currently offline Christian HagerFriend
Messages: 53
Registered: July 2009
Location: Germany
Member
In article <ch.hager-82DFF1.18451411012007@news.eclipse.org>,
Christian Hager <ch.hager@gmail.com> wrote:

> Hi,
>
> I'm having some difficulties with osgi classloading and I'm hoping
> someone here can help me.
>
> I have one class ResultEntry and a class FactorialResult which extends
> ResultEntry. Now in one of my bundles I get an resultEntry object which
> really is a FactorialTask from another bundle an then I want to
> FactorialTask using the following code
>
> FactorialResult fact = (FactorialResult) resultEntry;
>
> Now when I try to do so I get a the following exception.
>
> java.lang.ClassCastException:
> org.ac.computegrid.jobs.fibfact.FactorialResult
> at
> org.ac.computegrid.jobs.fibfact.FibFactJob.addResultEntry(Fi bFactJob.java
> :79)
> at
> org.ac.computegrid.master.GenericMaster$2.run(GenericMaster. java:167)
> at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)
>
> Following this I have also displayed the ClassLoaderTrees as I get them
> with this code
>
> ClassLoaderUtil.displayContextClassLoaderTree ();
> ClassLoaderUtil.displayClassLoaderTree(FactorialResult.class
> .getClassLoader ());
> ClassLoaderUtil.displayClassLoaderTree (resultEntry.getClass
> ().getClassLoader ());
> ClassLoaderUtil.displayClassLoaderTree (ResultEntry.class.getClassLoader
> ());
>
> and here the output
>
>
> ClassLoader Tree has 3 levels
> cl0 -- Boot ClassLoader
> |
> cl1 -- ClassLoader
> org.eclipse.osgi.baseadaptor.BaseAdaptor$ParentClassLoader@1b06041: is
> unknown ClassLoader type
> |
> cl2 -- ClassLoader
> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@19422d2: is
> unknown ClassLoader type
>
> ClassLoader Tree has 3 levels
> cl0 -- Boot ClassLoader
> |
> cl1 -- ClassLoader
> org.eclipse.osgi.baseadaptor.BaseAdaptor$ParentClassLoader@1b06041: is
> unknown ClassLoader type
> |
> cl2 -- ClassLoader
> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@467991: is
> unknown ClassLoader type
>
> ClassLoader Tree has 4 levels
> cl0 -- Boot ClassLoader
> |
> cl1 -- ClassLoader
> org.eclipse.osgi.baseadaptor.BaseAdaptor$ParentClassLoader@1b06041: is
> unknown ClassLoader type
> |
> cl2 -- ClassLoader
> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@19422d2: is
> unknown ClassLoader type
> |
> cl3 -- ClassLoader
> sun.rmi.server.LoaderHandler$Loader@1174ec5["ahttp://computegrid:computeg
> rid@192.168.0.200/codebase/computegrid_jobs.jar"]:
> ahttp://computegrid:computegrid@192.168.0.200/codebase/compu tegrid_jobs.j
> ar
>
> ClassLoader Tree has 3 levels
> cl0 -- Boot ClassLoader
> |
> cl1 -- ClassLoader
> org.eclipse.osgi.baseadaptor.BaseAdaptor$ParentClassLoader@1b06041: is
> unknown ClassLoader type
> |
> cl2 -- ClassLoader
> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@19422d2: is
> unknown ClassLoader type
>
>
> Can anyone tell me how to solve this? Ah if it helps the ResultEntry
> object comes from a JavaSpace
>
> Thanks for any help
>
> Christian Hager

Sorry, here a little correction. FactorialTask has nothing to do with
the Problem. It was just a
typing mistake. I meant FactorialResult is a subclass of ResultEntry and
resultEntry is an instance of FactorialResult which I receive as an
ResultEntry and then want to cast to FactorialResult.

Sorry for the mistake.

Any ideas?
Previous Topic:bundle class loaders caching issues?
Next Topic:config plugins directory location used by org.eclipse.update.configurator
Goto Forum:
  


Current Time: Sat Apr 27 02:49:52 GMT 2024

Powered by FUDForum. Page generated in 0.02314 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top