java.lang.NoClassDefFoundError:在JBoss EAP 5.0
获得以下异常到JBoss EAP 5.0无法初始化类org.apache.poi.POIXMLDocument但在JBoss的5.1 GA做工精细。java.lang.NoClassDefFoundError:在JBoss EAP 5.0
我们使用包括POI 3.7和罐子是
- POI-3.7.jar
- POI-OOXML-schemas.jar
- POI-ooxml.jar
堆栈跟踪是
ERROR [org.apache.catalina.core.ContainerBase.[jboss.ueb].[localhost].[fesbcon-Fig].[Faces Servlet]]
3;13;44.4g3pM (http-0.0.0.0-8280-1) Servlet.service() -For servlet Faces Servlet threu exception
java.lang.NoClassDe-FFoundError: Could not initialize class org.apache.poi.POIXMLDocument
at org.apache.poi.ss.usermodel.HorkbookFactory.create(HorkbookFactory.java:62)
at com.-Ferguson.esb.con-Fig.controller.AssociationsExcelUploadController.submit(Unknoun Source)
at sun.re-Flect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.re-Flect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.re-Flect.DelegatingMethodAccessorImpl.invoke(Delegating?ethodAccessorImpl.java:25)
at java.lang.re-Flect.Method.invoke(Method.java:597)
at org.apache.my-Faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
at org.apache.my-Faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:61)
请指教如何解决e在JBoss 5.0中的这个问题EAP
看起来应用程序看起来像是抛出了异常,因为在JBoss 5.0下运行时,Apache XMLBeans JAR或类不存在。看来Apache POI正试图加载类org.apache.xmlbeans.XMLOptions
,但它找不到这个类。
消息Could not initialize class SomeClass
表示JVM已尝试两次,未能加载并静态初始化类SomeClass
。在这种情况下,所讨论的课程是org.apache.poi.POIXMLDocument
。
类的静态初始化包括静态初始化其超类,将值分配给所有static
字段并运行所有static
初始化块。 POIXMLDocument类有几个static
String
常量,这不会导致任何问题,但没有静态初始化器。然而,这是POIXMLDocumentPart一个子类,这是Object
一个子类,它具有以下静态初始化代码:如果JVM无法加载所有POILogger
,POILogFactory
和XmlOptions
类
private static POILogger logger = POILogFactory.getLogger(POIXMLDocumentPart.class);
public static final XmlOptions DEFAULT_XML_OPTIONS;
static {
DEFAULT_XML_OPTIONS = new XmlOptions();
DEFAULT_XML_OPTIONS.setSaveOuter();
DEFAULT_XML_OPTIONS.setUseDefaultNamespace();
DEFAULT_XML_OPTIONS.setSaveAggressiveNamespaces();
}
这种静态初始化将失败。
POILogger
和POILogFactory
这两个类都是从包org.apache.poi.util.POILogFactory
导入的,两个类都包含在poi-3.7.jar中,所以它们在这里不是问题。所以,通过消除,看起来XmlOptions
类,import
编号从org.apache.xmlbeans.XmlOptions
,必须丢失。
我发现从反射镜here之一包含xmlbeans-2.6.0.zip
可下载的文件夹lib
内内xbean.jar
此XMLOptions
类。
这很可能对我来说,增加这个JAR将修复在JBoss EAP 5.0的问题。但是,我知道你说你的应用程序在JBoss 5.1 GA中工作正常,这意味着JBoss 5.1 GA包含这个JAR的副本,而5.0 EAP则没有。因此,我不确定解决此问题的最佳方法是什么。我会犹豫是否将这个XMLBeans JAR添加到您的应用程序中,因为这样做可能会导致您在JBoss 5.1下运行时出现问题。我不知道是否有办法为JBoss 5.0添加额外的'库'JAR,可能值得一看?
单独仅添加xbean.jar,你解决不了这个问题。它会继续抱怨阶级没有找到。我所做的不仅是导入xbean.jar,还导入了xmlbeans-2.5的lib文件夹下列出的其他jar文件。0
我与Apache POI在JBoss 8.2(WildFly 8.2.0.Final)上运行同样的错误3.14
错误:
产生的原因:java.lang.NoClassDefFoundError:无法初始化类组织.apache.poi.POIXMLTypeLoader
我通过在ooxml-lib文件夹中包含Apache POI 3.14发行版中的部署中包含最新的xmlbeans-2.6.0 jar(我以前拥有2.4.0)来解决此问题。
放置在类路径下面的罐子会做的伎俩:
的dom4j-1.6.1.jar
POI-3.9-20121203.jar
POI-ooxml- 3.9-20121203.jar
poi-ooxml-schemas-3.9-20121203.jar
点
的xmlbeans-2.3.0.jar
是我还是这是否堆栈跟踪看起来就像是一个堆栈跟踪的屏幕截图的OCR扫描? –
@LukeWoodward是的,这是一个OCR扫描 – nidhin
HorkbookFactory让我微笑,+1 – geert3