编程语言
首页 > 编程语言> > 如何避免Apache POI中的java.lang.NoSuchMethodError:org.apache.poi.util.IOUtils.copy(Ljava / io / InputStrea

如何避免Apache POI中的java.lang.NoSuchMethodError:org.apache.poi.util.IOUtils.copy(Ljava / io / InputStrea

作者:互联网

我有一个代码,用于将水印添加到现有的.doc文件中.

以下是我到目前为止尝试过的代码

public static void main(String[] args)
{

    try
    {
        XWPFDocument xDoc = new XWPFDocument(new FileInputStream("test.doc"));
        XWPFHeaderFooterPolicy xFooter = new XWPFHeaderFooterPolicy(xDoc);
        xFooter.createWatermark("My Watermark");
    }
    catch(Exception e) {
        e.printStackTrace();
    }
}

以下是我得到的

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.poi.util.IOUtils.copy(Ljava/io/InputStream;Ljava/io/OutputStream;)V
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:50)
at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:71)
at com.avi.Test.ReadDoc.main(Watermark.java:38)

解决方法:

我今天收到了这个错误:
“java.lang.NoSuchMethodError:org.apache.poi.util.POILogger.log(I [Ljava /郎/对象;)V]”

它看起来与您的错误不同,但非常相似.仅供参考,我正在使用maven来管理罐子.经过一些实验,我发现根案例是poi.jar和poi-ooxml.jar的版本不一致.

此配置将出错:

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.12</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.13</version>
    </dependency>

我将poi.jar的版本从3.12更改为3.13

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.13</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.13</version>
    </dependency>

宾果游戏,问题解决了.我希望这会帮助遇到这种异常的人.

标签:java,apache-poi,doc-2
来源: https://codeday.me/bug/20190927/1824325.html