java.lang.NoClassDefFoundError: javax/xml/transform/TransformerConfigurationException

276 views Asked by At

I am using dummy html string and trying to create the pdf from that... once it tries to create ITextRenderer object, I am getting the "java.lang.NoClassDefFoundError: javax/xml/transform/TransformerConfigurationException"

Document doc = Jsoup.parse("<html><head><title>Pdf Generation..!</title></head><body><p>Pdf generated using flying saucer pdf openpdf!!!!</p></body></html>","UTF-8");
doc.outputSettings().syntax(Document.OutputSettings.Syntax.xml);
try (OutputStream os = new FileOutputStream("output.pdf")){
ITextRenderer renderer = new ITextRenderer();
    SharedContext cntxt = renderer.getSharedContext();
    cntxt.setPrint(true);
    cntxt.setInteractive(false);
    renderer.setDocumentFromString(doc.html(), "");
    renderer.layout();
    renderer.createPDF(os);
    logger.info("PDF Generation using OpenPDF Done Successfully!!!");
}
catch(Exception ex){
    ex.printStackTrace();
}

This is a maven archetype project and dependencies used for this are,

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.14.3</version>
</dependency>
<dependency>
    <groupId>org.xhtmlrenderer</groupId>
    <artifactId>flying-saucer-pdf-openpdf</artifactId>
    <version>9.1.20</version>
</dependency>
<dependency>
    <groupId>org.xhtmlrenderer</groupId>
    <artifactId>flying-saucer-core</artifactId>
    <version>9.1.20</version>
</dependency>

I have looked through some of the shared suggestions, but none of it could resolve this...

1

There are 1 answers

0
Yegor Kozlov On

Check the Import-Package directive in the BND Maven plugin. Either import javax.xml.transform explicitly or import everything (*)

javax.xml.transform.* is a provided API which is present in many bundle definitions. The correct Import-Package should include something like this:

javax.xml.transform,version=2.1.0 from org.apache.felix.framework (0)