I am  currently migrating an application from Karaf 3.0.8 to Karaf 4.2.1.
I have problems with a bundle, it can not instantiate a JAXB context object.
It throws the following exception:

java.lang.RuntimeException: Provider for class
javax.xml.parsers.SAXParserFactory cannot be created
    at
javax.xml.parsers.$FactoryFinder.findServiceProvider($FactoryFinder.java:212)
    at javax.xml.parsers.$FactoryFinder.find($FactoryFinder.java:180)
    at javax.xml.parsers.$FactoryFinder.find($FactoryFinder.java:122)
    at
javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:43)
    at
com.sun.xml.bind.v2.util.XmlFactory.createParserFactory(XmlFactory.java:123)
    at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.getXMLReader(UnmarshallerImpl.java:154)
    at
javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157)
    at
javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:214)
    ...
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.util.ServiceConfigurationError:
javax.xml.parsers.SAXParserFactory: Provider
org.apache.xerces.jaxp.SAXParserFactoryImpl not found
    at java.util.ServiceLoader.fail(ServiceLoader.java:239)
    at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
    at
java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:372)
    at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
    at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
    at
javax.xml.parsers.$FactoryFinder.lambda$findServiceProvider$3($FactoryFinder.java:206)
    at java.security.AccessController.doPrivileged(Native Method)
    at
javax.xml.parsers.$FactoryFinder.findServiceProvider($FactoryFinder.java:197)
    ... 71 more

Caused by:
java.util.ServiceConfigurationError: javax.xml.parsers.SAXParserFactory:
Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found
    at java.util.ServiceLoader.fail(ServiceLoader.java:239)
    at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
    at
java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:372)
    at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
    at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
    at
javax.xml.parsers.$FactoryFinder.lambda$findServiceProvider$3($FactoryFinder.java:206)
    at java.security.AccessController.doPrivileged(Native Method)
    at
javax.xml.parsers.$FactoryFinder.findServiceProvider($FactoryFinder.java:197)
    at javax.xml.parsers.$FactoryFinder.find($FactoryFinder.java:180)
    at javax.xml.parsers.$FactoryFinder.find($FactoryFinder.java:122)
    at
javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:43)
    at
com.sun.xml.bind.v2.util.XmlFactory.createParserFactory(XmlFactory.java:123)
    at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.getXMLReader(UnmarshallerImpl.java:154)
    at
javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157)
    at
javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:214)


The class org.apache.xerces.jaxp.SAXParserFactoryImpl comes from bundle

mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xerces/2.12.0_1

it is provided by the wss4j from the cxf-3.2.7 feature.

When I add an import to org.apache.xerces.jaxp to the bundle then JAXB is
working. But this cannot be the solution because it binds my bundle onto
this implementation.

How can I solve this problem?

Richard

Reply via email to