Problème
La mise à niveau vers AEM 6.2 SP1 CFP9, Granite Apache POI échoue après l’installation du module complémentaire Forms.
Plus spécifiquement, les méthodes de la classe SXSSFWorkbook peuvent échouer avec des exceptions semblables aux suivantes :
Exception : org.apache.xmlbeans.impl.schema.SchemaTypeImpl ne peut être converti en org.apache.xmlbeans.impl.values.TypeStoreUserFactory java.lang.ClassCastException: org.apache.xmlbeans.impl.schema.SchemaTypeImpl ne peut être converti en org.apache.xmlbeans.impl.values.TypeStoreUserFactory at org.apache.xmlbeans.impl.store.Xobj.setStableType(Xobj.java:1402) at org.apache.xmlbeans.impl.store.Cur.setType(Cur.java:2500) at org.apache.xmlbeans.impl.store.Cur.setType(Cur.java:2485) at org.apache.xmlbeans.impl.store.Locale.newInstance(Locale.java:636) at org.apache.xmlbeans.impl.store.Locale.newInstance(Locale.java:612) at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.newInstance(SchemaTypeLoaderBase.java:198) at org.apache.poi.POIXMLTypeLoader.newInstance(POIXMLTypeLoader.java:112) at org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook$Factory.newInstance(Unknown Source) at org.apache.poi.xssf.usermodel.XSSFWorkbook.onWorkbookCreate(XSSFWorkbook.java:446) at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:244) at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:235) at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:240) at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:210) at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:185) at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:271) at testpoi.servlets.TestPOIServlet.doGet(TestPOIServlet.java:28) |
La trace de pile ci-dessus est générée lorsque vous exécutez la conversion suivante, par exemple :
SXSSFWorkbook w = new SXSSFWorkbook(1000); |
Environnement
AEM 6.x avec package Forms installé
-> AEM 6.2 SP1 avec CFP9 entre CFP15 installé.
-> AEM 6.3
-> AEM 6.4
Cause
Le problème se produit car la bibliothèque Apache POI (com.adobe.granite.poi) importe certaines classes « org.apache.xmlbeans.impl.* » à partir d’un lot ajouté par Forms (Apache ServiceMix :: Bundles:: xmlbeans (org.apache.servicemix.bundles.xmlbeans) et certaines classes sont utilisées à partir du lot POI lui-même.
Les deux lots contiennent différentes versions de classes « org.apache.xmlbeans.impl.* » : Forms contient la version 2.4.0, tandis que granite.poi dispose de la version 2.0.6.
Les différentes versions de la classe en cours de sélection entraînent l’utilisation de l’exception Distribution.
Résolution
La solution temporaire consiste à désinstaller "Apache ServiceMix :: Bundles :: xmlbeansorg.apache.servicemix.bundles.xmlbeans Version 2.4.0.5".
Ce lot est utilisé dans le connecteur J2EE et peut donc être supprimé en toute sécurité lorsque vous utilisez une instance OSGi d’AEM Forms.
Lorsque vous utilisez une instance J2EE d’AEM Forms :
Sous AEM 6.2, le problème est résolu à partir de CFP16. Il sera également abordé dans la prochaine version principale d’AEM: 6.5.
Afin d’effectuer une correction dans les versions 6.3 et 6.4, veuillez contacter le service d’assistance technique d’Adobe pour demander un correctif pour le bogue CQ-4244778.
Adobe
Recevez de l’aide plus rapidement et plus facilement
Nouvel utilisateur ?