No, this doesn't work. The DataFlavor class explicitly uses the System
Classloader to load classes. If that fails then it uses the TCCL.
Because the javax.activation.DataHandler is also part of the JDK
(since Java 6) it finds it in the JRE and that's where the
LinkageError occurs. I have a workaround for the moment, simply using
the javax.activation classes from the JRE, but it's limiting me from
providing an alternative javax.activation implementation going
forward.

Thanks,

David

On 21 April 2015 at 14:45, Jamie G. <jamie.goody...@gmail.com> wrote:
> Can you manually set the class path in your bundle to pick up your
> classes first?
>
> I know that's a bit of a hack around, but if it works at least you can
> continue on...
>
> Cheers,
> Jamie
>
> On Tue, Apr 21, 2015 at 11:13 AM, David Bosschaert
> <david.bosscha...@gmail.com> wrote:
>> I guess what I'm looking for is a bundle that I can install in an OSGi
>> framework without having to change any startup properties etc...
>>
>> On 21 April 2015 at 14:39, Jamie G. <jamie.goody...@gmail.com> wrote:
>>> Great question.
>>>
>>> Can you override/replace it via the karaf etc/jre.properties file?
>>>
>>> Cheers,
>>> Jamie
>>>
>>> On Tue, Apr 21, 2015 at 10:53 AM, David Bosschaert
>>> <david.bosscha...@gmail.com> wrote:
>>>> Hi all,
>>>>
>>>> Apologies for posting to the Karaf list as this is not really a Karaf
>>>> issue, but I this list may contain people that might have come across
>>>> this issue as well.
>>>>
>>>> I have some code that runs in OSGi that uses
>>>> javax.activation.DataHandler. As this is javax... you should be able
>>>> to provide your own bundle providing these classes. So I have a bundle
>>>> that provides an alternative javax.activation.DataHandler. Now it
>>>> turns out that this class has a dependency on
>>>> java.awt.datatransfer.DataFlavor, a java.awt class! The DataFlavor
>>>> code is kicked in from DataHandler, but then DataFlavor tries to load
>>>> some classes too, in my case it tries to load DataHandler again. The
>>>> code in DataFlavor tries to load classes from the System Classloader
>>>> first, so it finds the javax.activation.DataHandler in the JRE and
>>>> loads that -> boom LinkageError.
>>>>
>>>> I was wondering whether there are any 'fixed' versions of
>>>> javax.activation that don't expose this behaviour and work properly in
>>>> a modular environment like OSGi.
>>>>
>>>> Many thanks,
>>>>
>>>> David

Reply via email to