Try to set the context classloader to the classloader of your bundle
before the call that fails i.e.,
ClassLoader tccl = Thread.currentThread().getContextClassLoader();
try
{
Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
// call to code that instigates the classloader
}
finally
{
Thread.currentThread().setContextClassLoader(tccl);
}
Notice that in this case your bundle needs to import the missing
package as well (unless it is provided inside the bundle).
regards,
Karl
On Mon, Jun 30, 2008 at 6:08 PM, Richard Martin
<[EMAIL PROTECTED]> wrote:
> Hello,
>
> I am trying to wrap a project that has a huge number of dependent
> jars. Jars that only this project will use so I took to using BND and
> including them all. This takes a bit of time to build each time, like
> 5 minutes but it does give me a nice single drop in jar.
>
> The problem I have is that the things I am wrapping up are cfx web
> services. I have never used this stuff or really seen the code I just
> have the jars. I have been stepping through what goes on and it seems
> to be a classloader issue:
>
> Basically javax.xml.ws.spi.Provider calls find on FactoryFinder
> passing in a property to look for. This property is
> "javax.xml.ws.spi.Provider".
>
> Finder then uses this property and creates a classloader using the
> current thread, it then generates a string
> ("META-INF/services/javax.xml.ws.spi") which is a file in my wrapped
> jar that contains the location of the cfx ProviderImpl. This location
> is then used to load the class with the classloader reference it has
> and return an instance. If this file can't be found it looks for a
> system property of the same name.
>
> The problem I am having is this code cannot seem to find either the
> file in services folder, or if I set the system property manually it
> then can't find the class. I'm guessing this is some classloader
> issue, everything works fine if I run this project not as a plugin. I
> hope some of that made sense.
>
> Is there something I can do in Felix or my wrapped jar to help this
> code find the correct classpath.
>
> Cheers
> Bob
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
--
Karl Pauls
[EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]