Page 1 of 1

docx4j-JAXB-Internal:8.2.0 ClassNotFoundException: org.docx4

PostPosted: Thu Jul 09, 2020 7:04 pm
by besterht
Hi Jason,

I'm using Java 8, added this to my build.gradle
Code: Select all
compile "org.docx4j:docx4j-JAXB-Internal:8.2.0"


When refreshing my dependancies it pulls in the following:
Code: Select all
Gradle: org.docx4j.org.apache:xalan-interpretive:8.0.0
Gradle: org.docx4j.org.apache:xalan-metainf:8.0.0
Gradle: org.docx4j.org.apache:xalan-serializer:8.0.0
Gradle: org.docx4j:docx4j-core:8.2.0
Gradle: org.docx4j:docx4j-JAXB-Internal:8.2.0
Gradle: org.docx4j:docx4j-openxml-objects:8.2.0
Gradle: org.docx4j:docx4j-openxml-objects-pml:8.2.0
Gradle: org.docx4j:docx4j-openxml-objects-sml:8.2.0


When doing the prepare, it fails with ClassNotFoundException: org.docx4j.jaxb.ri.NamespacePrefixMapper

Code: Select all

WordprocessingMLPackage wordMLPackage;
                try {
                    wordMLPackage = WordprocessingMLPackage.load(template);
                    MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
                   
                    VariablePrepare.prepare(wordMLPackage);
                    documentPart.variableReplace(model);
                   
                    resp.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
                    HttpResponseUtil.setHeadersForFileDownload(resp, model.get("filename"), null);
                   
                    Save saver = new Save(wordMLPackage);
                    saver.save(resp.getOutputStream());
                   
                } catch (Docx4JException e) {
                    e.printStackTrace();


Thanks!
Hanlie

Re: docx4j-JAXB-Internal:8.2.0 ClassNotFoundException: org.d

PostPosted: Sat Jul 11, 2020 11:39 am
by jason
Works for me.

I set up a gradle project in Eclipse

Code: Select all
dependencies {

    compile "org.docx4j:docx4j-JAXB-Internal:8.2.0"
   
}


Worked fine. Its better to have some logging:

Code: Select all
dependencies {

    compile "org.docx4j:docx4j-JAXB-Internal:8.2.0"
   
    compile "ch.qos.logback:logback-classic:1.2.3"
    compile "org.docx4j:docx4j-samples-resources:8.2.0"
}


This produces:

Code: Select all
10:33:27.324 [main] INFO org.docx4j.jaxb.Context - java.vendor=Oracle Corporation
10:33:27.324 [main] INFO org.docx4j.jaxb.Context - java.version=1.8.0_242
10:33:27.324 [main] INFO org.docx4j.jaxb.Context - java.vm.name=OpenJDK 64-Bit Server VM
10:33:29.588 [main] DEBUG org.docx4j.jaxb.Context - JAXB Context: com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl
10:33:29.589 [main] INFO org.docx4j.jaxb.Context - Using Java 6+ JAXB implementation


What IDE are you using? Maybe you previously used docx4j-JAXB-ReferenceImpl and something is cached somewhere?

Can you produce a stack trace for your exception?