docx4j
docx4j copied to clipboard
LinkageError: loader constraint violation
https://stackoverflow.com/questions/66914307/linkageerror-loader-constraint-violation-bundleclassloader-docx4j
Am using org.docx4j.Docx4J in a desktop application for converting WORD file to PDF and it all works fine.
The same desktop application, when launched as an OSGi plug-in, throws NoClassDefFoundError: javax/xml/bind/JAXBException for the above mentioned conversion.
Upon adding the below dependencies:
implementation group: 'org.docx4j', name: 'docx4j-JAXB-Internal', version: '8.2.8'
implementation group: 'org.docx4j', name: 'docx4j-JAXB-ReferenceImpl', version: '8.2.8'
implementation group: 'org.docx4j', name: 'docx4j-JAXB-MOXy', version: '8.2.8'
I get the below error (in bold):
java.lang.linkageerror: loader constraint violation: when resolving interface method "javax.xml.stream.XMLStreamReader.getNamespaceContext()Ljavax/xml/namespace/NamespaceContext;" the class loader "" (instance of org.apache.felix.framework.BundleWiringImpl$BundleClassLoader@2dd2e270, child of sun.misc.Launcher$AppClassLoader@277050dc) of the current class, org/eclipse/persistence/internal/oxm/record/namespaces/UnmarshalNamespaceContext, and the class loader for the method's defining class, javax/xml/stream/XMLStreamReader, have different Class objects for the type javax/xml/namespace/NamespaceContext used in the signature
at org.eclipse.persistence.internal.oxm.record.namespaces.UnmarshalNamespaceContext.getPrefix(UnmarshalNamespaceContext.java:58)
at org.eclipse.persistence.internal.oxm.record.UnmarshalRecordImpl.resolveNamespaceUri(UnmarshalRecordImpl.java:1338)
at org.eclipse.persistence.internal.oxm.SAXFragmentBuilder.startElement(SAXFragmentBuilder.java:78)
at org.eclipse.persistence.internal.oxm.XMLRelationshipMappingNodeValue.setupHandlerForKeepAsElementPolicy(XMLRelationshipMappingNodeValue.java:231)
at org.eclipse.persistence.internal.oxm.XMLAnyObjectMappingNodeValue.startElement(XMLAnyObjectMappingNodeValue.java:179)
at org.eclipse.persistence.internal.oxm.record.UnmarshalRecordImpl.startElement(UnmarshalRecordImpl.java:864)
at org.eclipse.persistence.internal.oxm.record.XMLStreamReaderReader.parseEvent(XMLStreamReaderReader.java:138)
at org.eclipse.persistence.internal.oxm.record.XMLStreamReaderReader.parse(XMLStreamReaderReader.java:102)
at org.eclipse.persistence.internal.oxm.record.XMLStreamReaderReader.parse(XMLStreamReaderReader.java:89)
at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:940)
at org.eclipse.persistence.internal.oxm.XMLUnmarshaller.unmarshal(XMLUnmarshaller.java:655)
at org.eclipse.persistence.jaxb.JAXBUnmarshaller.unmarshal(JAXBUnmarshaller.java:637)
at org.docx4j.convert.in.FlatOpcXmlImporter.(FlatOpcXmlImporter.java:132)
Please advise! Thanks in advance!