java.lang.NoClassDefFoundError: impossible d'initialiser la classe org.apache.pi.POIXMLDocument sur Jboss 5.0 EAP
Obtenir de l'exception suivante dans Jboss 5.0 PAE, mais il fonctionne bien dans JBoss 5.1 GA.
nous sommes à l'aide de POI 3.7 et bocaux sont inclus
- poi-3.7.jar
- poi-ooxml-schemas.jar
- poi-ooxml.jar
La trace de la pile est
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)
Veuillez indiquer comment résoudre ce problème dans JBoss 5.0 EAP
- Est-ce moi ou est-ce que stacktrace ressemble, il est un OCR scan d'une capture d'écran d'une stacktrace?
- Oui, c'est un OCR Scan
Vous devez vous connecter pour publier un commentaire.
On dirait que vous êtes de l'application est de lancer l'exception que vous voyez, car un Apache XMLBeans POT ou de la classe n'est pas présent lors de l'exécution sous JBoss 5.0. Il semble Apache POI est d'essayer de charger la classe
org.apache.xmlbeans.XMLOptions
mais il ne peut pas trouver cette classe.Le message
Could not initialize class SomeClass
indique que la JVM a essayé deux fois et a échoué à la charge statique initialiser la classeSomeClass
. Dans ce cas, la classe en question estorg.apache.poi.POIXMLDocument
.Initialisation statique d'une classe se compose de manière statique l'initialisation de sa super-classe, l'affectation de valeurs à tous les
static
champs et l'exécution de tous lesstatic
initialiseur de blocs. Le POIXMLDocument de catégorie a quelquesstatic
String
constantes, qui ne causera pas de problème, mais pas de l'initialiseur statique. Toutefois, c'est une sous-classe de POIXMLDocumentPart, qui est une sous-classe deObject
et qui a de l'électricité statique de code d'initialisation:Cette initialisation statique échouera si la JVM ne peut pas charger tous les
POILogger
,POILogFactory
etXmlOptions
classes.La
POILogger
etPOILogFactory
classes sont importées à partir du packageorg.apache.poi.util.POILogFactory
, et les deux classes sont contenues à l'intérieur poi-3.7.jar, donc ils ne sont pas le problème ici. Donc, par élimination, il semble que leXmlOptions
classe,import
ed deorg.apache.xmlbeans.XmlOptions
, doit être manquant.J'ai trouvé ce
XMLOptions
classe au sein dexbean.jar
contenues dans lelib
dossier dexmlbeans-2.6.0.zip
téléchargeable à partir de l'un des miroirs ici.Il semble probable pour moi que l'ajout de ce POT va résoudre le problème sur JBoss 5.0 EAP. Cependant, je suis conscient que vous avez dit que votre application fonctionne très bien dans JBoss 5.1 GA, ce qui implique pour moi que JBoss 5.1 GA contient une copie de ce POT alors qu'5.0 EAP n'est pas. En conséquence, je ne suis pas sûr de ce que la meilleure façon de résoudre ce problème. J'avais hésiter à ajouter cette XMLBeans BOCAL à votre application comme vous risqueriez de provoquer des problèmes lorsque vous exécutez sous JBoss 5.1. Je ne sais pas si il existe un moyen d'ajouter de l' "bibliothèque" Pots de JBoss 5.0, bien que - c'est peut-être intéressant de regarder?
J'ai eu le même message d'erreur en cours d'exécution sur JBoss 8.2 (WildFly 8.2.0.Final) avec Apache PI 3.14
Erreur:
Causés par: java.lang.NoClassDefFoundError: impossible d'initialiser la classe org.apache.pi.POIXMLTypeLoader
J'ai fixé ce, en incluant les dernières xmlbeans-2.6.0 pot (j'ai déjà eu 2.4.0) dans mon déploiement qui est inclus avec l'Apache POI 3.14 répartition dans l'ooxml-dossier lib.
En ajoutant seulement l'xbean.jar seul, vous ne pouvez pas résoudre le problème. Il continuera à se plaindre de la classe n'a pas trouvé. Ce que j'ai fait c'est que l'importation n'est pas seulement xbean.jar mais aussi d'autres fichiers jar qui sont énumérés sous dossier lib de xmlbeans-2.5.0
Plaçant la Suite de pots dans le classpath fera l'affaire:
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