在TomCat上运行的POI会导致加载程序约束违规

时间:2016-10-06 20:39:08

标签: java excel tomcat apache-poi

我正在尝试使用Apache POI生成XSLX,但在尝试运行我的TomCat应用程序时出现此错误:

HTTP Status 500 - javax.servlet.ServletException: java.lang.LinkageError: loader constraint violation: when resolving interface method

 "org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.PropertiesDocument.copy()Lorg/apache/xmlbeans/XmlObject;" 

the class loader (instance of org/apache/catalina/loader/WebappClassLoader) 
of the current class, 
org/apache/poi/POIXMLProperties, 

and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) 
for resolved class, org/openxmlformats/schemas/officeDocument/x2006/extendedProperties/PropertiesDocument, 

have different Class objects for the type ts.schemas.officeDocument.x2006.extendedProperties.PropertiesDocument.copy()Lorg/apache/xmlbeans/XmlObject; 

used in the signature

我正在使用POI 3.15。 POI JAR存储在常见的Tomcat7 / lib文件夹中。 (poi-3.15.jar,poi-ooxml-3.15.jar,poi-ooxml-schemas-3.15.jar,xmlbeans-2.6.0.jar)

有谁能帮我解释一下这里的冲突以及如何解决?

1 个答案:

答案 0 :(得分:1)

在WEB-INF lib中我放了几乎所有相关的JAR文件。似乎xmlbeans(可能还有更多)在之后与WAR一起出现时会引发冲突。

但是当清理时我在WEB-INF / lib中只有poi-3.15.jar和poi-ooxml-3.15.jar,我遇到了Eclise IDE和TomCat运行时都工作的情况。