【问题标题】:docx4j Couldn't get [Content_Types].xml from ZipFiledocx4j 无法从 ZipFile 获取 [Content_Types].xml
【发布时间】:2015-09-14 14:30:23
【问题描述】:

我一直在谷歌搜索并尝试各种事情,例如将 jaxb.properties 文件放入我的 web2 文件夹以指定 eclipselink,但根本没有任何运气。

我可以从 eclipse 简单代码运行

String inputfilepath = "mywordfile.docx";

WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new java.io.File(inputfilepath));
MainDocumentPart main = wordMLPackage.getMainDocumentPart();

但是当它在 jboss(相同的 jdk,旧版本的 jboss)下运行时,我得到了

org.docx4j.openpackaging.exceptions.Docx4JException:
Couldn't get [Content_Types].xml from ZipFile

我想不出一个简单的方法来解决它。大多数谷歌搜索建议更改 jaxb 的实现 - 但我没有编组自己的类,所以它没有意义(我的尝试也没有奏效)。

有什么想法吗?

【问题讨论】:

    标签: ms-word jaxb docx4j


    【解决方案1】:

    要使用 EclipseLink/MOXy JAXB(相对于 JDK 中的 Sun/Oracle 版本或参考实现),您需要:

    1. 相关的 EclipseLink jars
    2. docx4j-MOXy-JAXBContext-3.0.0.jar(仅包含 jaxb.properties 文件)

    jaxb.properties 文件只是说:

    javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
    

    如果你使用的是 maven,你只需要添加:

    <dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j-MOXy-JAXBContext</artifactId>
    <version>3.0.0</version>
    </dependency>
    
    <dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>org.eclipse.persistence.moxy</artifactId>
    <version>2.5.1</version>
    </dependency>
    

    当你启动 docx4j 时,日志输出会告诉你它正在使用哪个 JAXB。

    【讨论】:

    • 太好了,我丢失了 docx4j-MOXy-JAXBContext-3.0.0.jar,现在可以使用了 - 谢谢!!!
    猜你喜欢
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多