Проблемы с преобразованием docx в PDF в java

Я пытаюсь преобразовать файл Word docx в файл PDF, используя Java и без какого-либо взаимодействия с пользователем.

Пока это мой код, я использую библиотеку docx4j.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package richard.fileupload;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import org.docx4j.convert.out.pdf.PdfConversion;
import org.docx4j.convert.out.pdf.viaXSLFO.PdfSettings;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
/**
 *
 * @author Richard
 */
public class pdfConverter {
        public static void main(String[] args) {
        createPDF();
        createPDF();
    }

    private static void createPDF() {
        try {
            long start = System.currentTimeMillis();

            // 1) Load DOCX into WordprocessingMLPackage
            InputStream is = new FileInputStream(new File(
                    "D:/HelloWorld.docx"));
            WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage
                    .load(is);

            // 2) Prepare Pdf settings
            PdfSettings pdfSettings = new PdfSettings();

            // 3) Convert WordprocessingMLPackage to Pdf
            OutputStream out = new FileOutputStream(new File(
                    "D:/HelloWorld.pdf"));
            PdfConversion converter = new org.docx4j.convert.out.pdf.viaXSLFO.Conversion(
                    wordMLPackage);
            converter.output(out, pdfSettings);

            System.err.println("Generate pdf/HelloWorld.pdf with "
                    + (System.currentTimeMillis() - start) + "ms");

        } catch (Throwable e) {
            e.printStackTrace();
        }
    }

}

Однако я получаю эту ошибку, когда пытаюсь запустить, она отлично компилируется

run:
java.lang.NoClassDefFoundError: org/apache/log4j/Logger
    at org.docx4j.openpackaging.Base.<clinit>(Base.java:42)
    at richard.fileupload.pdfConverter.createPDF(pdfConverter.java:32)
    at richard.fileupload.pdfConverter.main(pdfConverter.java:21)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 3 more
java.lang.NoClassDefFoundError: Could not initialize class org.docx4j.openpackaging.packages.WordprocessingMLPackage
    at richard.fileupload.pdfConverter.createPDF(pdfConverter.java:32)
    at richard.fileupload.pdfConverter.main(pdfConverter.java:22)
BUILD SUCCESSFUL (total time: 0 seconds)

Любая идея, что такое ошибка и в чем причина этого?

РЕДАКТИРОВАТЬ Теперь я получаю эту ошибку

java.lang.NoClassDefFoundError: org/apache/fop/apps/FopFactory
    at org.docx4j.convert.out.pdf.viaXSLFO.Conversion.output(Conversion.java:231)
    at richard.fileupload.pdfConverter.createPDF(pdfConverter.java:43)
    at richard.fileupload.pdfConverter.main(pdfConverter.java:22)

person user2065929    schedule 17.04.2013    source источник
comment
Существует зависимость от регистратора Apache. Получите файл JAR и поместите его в CLASSPATH. logging.apache.org/log4j/1.2/download.html   -  person Dave Jarvis    schedule 18.04.2013
comment
Проверьте этот пост: stackoverflow.com/questions/5376311/ Я думаю, это может помочь вам   -  person Barranka    schedule 18.04.2013
comment
Я надеюсь, что вы не столкнетесь с адом банок. Если это веб-приложение или корпоративное приложение работает на каком-либо сервере приложений (JBoss, GlassFish, WebSphere и т. д.). С некоторыми серверами приложений вы можете использовать log4j, который поставляется с сервером приложений, хотя это может сделать вас зависимым от сервера приложений. Если вы отправляете свой собственный log4j, вам, возможно, придется бороться, чтобы избежать столкновения с другим log4j. Если ваше приложение является программным обеспечением для настольных компьютеров, избегайте моего комментария.   -  person Csaba Toth    schedule 18.04.2013
comment
Привет, да, это веб-приложение, работающее на сервере Glassfish, не будет ли это решение работать с этим?   -  person user2065929    schedule 18.04.2013
comment
Спасибо, я решил эту проблему, но столкнулся с новой ошибкой   -  person user2065929    schedule 18.04.2013