我运行此代码时出错

时间:2018-02-02 05:39:01

标签: java pdf jar apache-poi docx

package demo;

import java.io.File; 
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;

import org.apache.poi.openxml4j.opc.*; 
import org.apache.poi.xwpf.converter.pdf.PdfConverter;
import org.apache.poi.xwpf.converter.pdf.PdfOptions;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

public class DocxToPdf {
    public static void main(String[] args){
    try
        {
            String inputFile = "F:\\MY WORK\\CollectionPractice\\WebContent\\APCR1.docx";
            String outputFile = "F:\\MY WORK\\CollectionPractice\\WebContent\\APCR1.pdf";

            System.out.println("inputFile:" + inputFile + ",outputFile:" + outputFile);

            FileInputStream in = new FileInputStream(inputFile);

            XWPFDocument document = new XWPFDocument(in);

            File outFile = new File(outputFile);

            OutputStream out = new FileOutputStream(outFile);

            PdfOptions options = null;

            PdfConverter.getInstance().convert(document, out, options);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

当我运行此代码时,会出现类似这样的错误,并且我也使用了以下jar文件。

  

错误:   java.lang.NoSuchMethodError:org.apache.poi.POIXMLDocumentPart.getPackageRelationship()Lorg / apache / poi / openxml4j / opc / PackageRelationship;

罐子: List of jar files

1 个答案:

答案 0 :(得分:1)

你可能混淆了jar版本的POI。该错误表明加载的类没有调用类在编译期间看到的方法,因此您在类路径中有不同版本的POI。

请参阅https://poi.apache.org/overview.html处的“组件地图”,了解所包含的不同组件以及它们最终的罐子,确保您的类路径中只有一个这样的罐子,而不是多个不同的版本。