Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [equinox-dev] JAXB with Java 11 in OSGi


Or you provide the class loader as parameter, when you create the JaxbContext.

Mark

-------- Ursprüngliche Nachricht --------
Von: Tom Schindl <tom.schindl@xxxxxxxxxxxxxxx>
Datum: 31.07.20 21:28 (GMT+01:00)
An: equinox-dev@xxxxxxxxxxx
Betreff: Re: [equinox-dev] JAXB with Java 11 in OSGi

IIRC you need to set the thread-context-classloader!

Try that:
---8<---
ClassLoader cl = Thread.currentThread().getContextClassLoader();

try {
   ClassLoader tmp = Bookstore.class.getClassLoader()
   Thread.currentThread().setContextClassLoader(tmp);
   context = JAXBContext.newInstance(Bookstore.class);
   Marshaller m = context.createMarshaller();
   ...
} finally {
   Thread.currentThread().setContextClassLoader(cl);
}
---8<---

Tom

Am 31.07.20 um 13:49 schrieb Lars Vogel:
> Hi Neil, Dmytro and Mark,
>
> I tried this but I'm still getting the ClassNotFound Exception.
>
> I uploaded a tiny example here:
> https://github.com/vogellacompany/eclipsercp-jaxb-java11
>
> In case you want to test, clone the repo, import the example into
> Eclipse and activate the jaxbtarget.target definition and start the
> application via the com.vogella.jaxb.product.
>
> Press the button called "Trigger JAXB"
>
> Results in ClassNotFoundException
>
> Caused by: java.lang.ClassNotFoundException:
> org.eclipse.persistence.jaxb.JAXBContextFactory at
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
> at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) at
> org.eclipse.osgi.internal.framework.ContextFinder.loadClass(ContextFinder.java:147)
> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) at
> javax.xml.bind.ContextFinder.safeLoadClass(ContextFinder.java:480) at
> javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:184) … 29
> more
>
> Best regards, Lars
>
> On Tue, Jul 28, 2020 at 3:07 PM Neil Bartlett <njbartlett@xxxxxxxxx> wrote:
>>
>> Hi Lars,
>>
>> Dmytro is correct, the jaxb-api and javax.activation bundles are required to provide the JAXB API on Java 11. You will also need an implementation of the API... the org.eclipse.persistence.core and org.eclipse.persistence.moxy bundles from EclipseLink provide this.
>>
>> I have had JAXB working with RCP for some time on J11 but unfortunately cannot share the code because it is commercial.
>>
>> Neil
>>
>> On Tue, 28 Jul 2020 at 14:03, Dmytro Pishchukhin <dmytro.pishchukhin@xxxxxxxxx> wrote:
>>>
>>> Hi Lars,
>>>
>>> Try to use 2 bundles to resolve JAXB packages:
>>> - jaxb-api (javax.xml.bind:jaxb-api:2.3.1)
>>> - javax.activation (com.sun.activation:javax.activation:1.2.0)
>>>
>>> On Tue, Jul 28, 2020 at 1:56 PM Lars Vogel <lars.vogel@xxxxxxxxxxx> wrote:
>>>>
>>>> Friends of OSGi,
>>>>
>>>> Is anyone aware of an example / description of how to use JAXB with
>>>> Java 11 in OSGI (Eclipse RCP)? If yes, please share it with me.
>>>>
>>>> The examples I found for Java 11 are not inside OSGi and fail for me.
>>>>
>>>> Best regards, Lars
>>>>
>>>>
>>>>
>>>> --
>>>> Eclipse Platform project co-lead
>>>> CEO vogella GmbH
>>>>
>>>> Haindaalwisch 17a, 22395 Hamburg
>>>> Amtsgericht Hamburg: HRB 127058
>>>> Geschäftsführer: Lars Vogel, Jennifer Nerlich de Vogel
>>>> USt-IdNr.: DE284122352
>>>> Fax (040) 5247 6322, Email: lars.vogel@xxxxxxxxxxx, Web: http://www.vogella.com
>>>> _______________________________________________
>>>> equinox-dev mailing list
>>>> equinox-dev@xxxxxxxxxxx
>>>> To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/equinox-dev
>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Dmytro Pishchukhin
>>> _______________________________________________
>>> equinox-dev mailing list
>>> equinox-dev@xxxxxxxxxxx
>>> To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/equinox-dev
>>
>> _______________________________________________
>> equinox-dev mailing list
>> equinox-dev@xxxxxxxxxxx
>> To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/equinox-dev
>
>
>
>
> _______________________________________________
> equinox-dev mailing list
> equinox-dev@xxxxxxxxxxx
> To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/equinox-dev
>
_______________________________________________
equinox-dev mailing list
equinox-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/equinox-dev

Back to the top