Hi all!
I'm trying to migrate our OSGi application to Java 11. However I cannot get pax-web to find the JAXB implementation. Which leads to a exception like the one below when it tries to parse a web.xml. I've added `com.sun.*` to bootdelegation but oddly enough that doesn't seem to matter.
I'm using the Apache Servicemix jaxb implementation bundle (org.apache.servicemix.bundles.jaxb-runtime) together with the Jakarta API bundle (jakarta.xml.bind-api). I've also tried adding a fragment which makes the jakarta API bundle import the apache servicemix jaxb implementation package (com.sun etc.). That also didn't work.
Can someone tell me what the proper way is to make pax-web recognize the JAXB implementation?
Regards,
Jasper
------8<-----------------------------
[org.ops4j.pax.web.extender.war.internal.parser.WebAppParser] : error parsing web.xml
javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
- with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory]
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:232)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:351)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:691)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:632)
at org.ops4j.pax.web.extender.war.internal.parser.WebAppParser.parseWebXml(WebAppParser.java:955)
at org.ops4j.pax.web.extender.war.internal.parser.WebAppParser.scanWebFragments(WebAppParser.java:363)
at org.ops4j.pax.web.extender.war.internal.parser.WebAppParser.parse(WebAppParser.java:186)
at org.ops4j.pax.web.extender.war.internal.WebObserver.createExtension(WebObserver.java:145)
at org.ops4j.pax.web.extender.war.internal.Activator.doCreateExtension(Activator.java:82)
at org.ops4j.pax.web.extender.war.internal.extender.AbstractExtender.createExtension(AbstractExtender.java:259)
at org.ops4j.pax.web.extender.war.internal.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:242)
at org.ops4j.pax.web.extender.war.internal.extender.AbstractExtender.addingBundle(AbstractExtender.java:195)
at org.ops4j.pax.web.extender.war.internal.extender.AbstractExtender.addingBundle(AbstractExtender.java:54)
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:475)
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:420)
at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)
at org.osgi.util.tracker.BundleTracker.open(BundleTracker.java:159)
at org.ops4j.pax.web.extender.war.internal.extender.AbstractExtender.startTracking(AbstractExtender.java:154)
at org.ops4j.pax.web.extender.war.internal.Activator.doStart(Activator.java:59)
at org.ops4j.pax.web.extender.war.internal.extender.AbstractExtender.start(AbstractExtender.java:117)
at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:698)
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2402)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2308)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1539)
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at javax.xml.bind.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:92)
at javax.xml.bind.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:125)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:230)
... 26 more
------8<-----------------------------