NoSuchMethodError: org.docx4j.org.apache.xml.serializer.SerializerFactory.getSerializer

问题描述

Maven 依赖

<dependency>
            <groupId>de.phip1611</groupId>
            <artifactId>docx4j-search-and-replace-util</artifactId>
            <version>1.0.3</version>
        </dependency>

<dependency>
        <groupId>org.docx4j</groupId>
        <artifactId>docx4j</artifactId>
        <version>6.1.2</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

我的代码如下所示。

 WordprocessingMLPackage sourceDocxDoc = WordprocessingMLPackage.load(fileInputStream) ;
 ByteArrayOutputStream out = new ByteArrayOutputStream();
 HashMap<String,String> replace = new HashMap<String,String>();
 replace.put("$Tag1","My Db Data");
 .
 .
 .
 .
 .
 .
 Docx4JSRUtil.searchAndReplace(sourceDocxDoc,replace);
 sourceDocxDoc.save(out);

程序在本地环境中成功运行,但有时在生产环境中出现异常,根据行 sourceDocxDoc.save(out); 上的附加图像;

我无法在本地环境中调试它,所以其他人在使用 Docx4j lib 替换包含标识符的 MS Word 文件时遇到了这个问题。

Java 专家热情回应........

Exception Image

Same issue found at this link

解决方法

问题由我自己解决

而不是使用下面的 maven 依赖

<dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j</artifactId>
    <version>6.1.2</version>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
        <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </exclusion>
    </exclusions>
</dependency>

我改为下面的 maven 依赖,它可以工作。

<dependency>
        <groupId>org.docx4j</groupId>
        <artifactId>docx4j-JAXB-ReferenceImpl</artifactId>
        <version>8.1.0</version>
    </dependency>

    <dependency>
        <groupId>org.docx4j</groupId>
        <artifactId>docx4j-core</artifactId>
        <version>8.1.0</version>
        <scope>compile</scope>
    </dependency>