2015-06-27 166 views
0

我一直在使用googling和尝试各种事情,例如将jaxb.properties文件放入我的web2文件夹以指定eclipselink,但没有任何运气。docx4j无法从ZipFile获取[Content_Types] .xml

我可以从日食简单的代码运行

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 

,我找不出一个简单的方法要解决这个问题。大多数使用google的人建议改变jaxb的实现 - 但我不是编组自己的类,所以它没有任何意义(也没有我的尝试工作)。

任何想法?

回答

1

要使用的EclipseLink /莫西JAXB(而不是在JDK或参考实现了Sun/Oracle版本),你需要:

  1. 相关的EclipseLink罐子
  2. docx4j - 莫西 - 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它正在使用。

+0

不错,它是docx4j-MOXy-JAXBContext-3.0.0.jar我错过了,现在就开始工作 - 谢谢! –