Apache POI исключение - PullRequest
       9

Apache POI исключение

0 голосов
/ 15 сентября 2018

Мне нужно преобразовать docx в PDF, и я собираюсь использовать Apache POI.Это мой POM:

<dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.0.0</version>
    </dependency>
    <dependency>
        <groupId>fr.opensagres.xdocreport</groupId>
        <artifactId>org.apache.poi.xwpf.converter.pdf</artifactId>
        <version>1.0.6</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.0.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>4.0.0</version>
    </dependency>


  </dependencies>

По какой-то причине я получаю исключение во время выполнения преобразования:

Исключение в потоке "main" java.lang.NoClassDefFoundError: org / apache / poi / POIXMLDocumentPart at org.apache.poi.xwpf.converter.core.styles.XWPFStylesDocument.getFontsDocument (XWPFStylesDocument.java:1477) в org.apache.poi.xwpf.styles.X.(XWPFStylesDocument.java:190) в org.apache.poi.xwpf.converter.core.styles.XWPFStylesDocument. (XWPFStylesDocument.java:184) в org.apache.poi.xwpf.converter.core.XmentisFidFidDocumentDocuFDJava: 166) в org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor. (XWPFDocumentVisitor.java:159) в org.apache.poi.xwpf.converter.pdf.internal.PdfMapper. (PdfMapper).в org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert (PdfConverter.java:55) в org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert (PdfConverter.java:38) в org.apache.poi.xwpf.converter.core.AbstractXWPFConverter.convert (AbstractXWPFConverter.java:45) в temp.main.Teste (main.java:30) в temp.main.main (main.java:18) Причина: java.lang.ClassNotFoundException: org.apache.poi.POIXMLDocumentPart на java.net.URLClassLoader.findClass (неизвестный источник) на java.lang.ClassLoader.loadClass (неизвестный источник) на sun.misc.Launcher $ AppClassLoader.loadClass (неизвестный источник) на java.lang.ClassLoader.loadClass(Неизвестный источник) ... еще 11

Я гуглил, пытаясь найти пропавшую зависимость, по крайней мере, мне так кажется, но я не могу найти информацию о POIXMLDocumentPart, которая можетчтобы исправить мою проблему.

Это метод, который я использую для преобразования документов:

public static void Teste(File file, String destino) {

        try {
            InputStream doc = new FileInputStream(file);
            XWPFDocument document = new XWPFDocument(doc);
            PdfOptions options = PdfOptions.create();
            OutputStream out = new FileOutputStream(new File(destino));
            PdfConverter.getInstance().convert(document, out, options);
            new File(destino);
        } catch(Exception e) {

        }
    }

1 Ответ

0 голосов
/ 15 сентября 2018

XDocReport скомпилирован с POI 3.17. POI 4.0.0 имеет некоторые изменения, и XDocReport не будет работать с POI 4.0.0. POIXMLDocumentPart перемещен в пакет org.apache.poi.ooxml.

См. https://github.com/opensagres/xdocreport/pull/324

Обновление (март 2019 г.). Похоже, XDocReport 2.0.2 был обновлен для использования POI 4.0.1.

...