Reputation: 1261
I'm implementing an indexer to read .docx type documents using Apache poi plugging. The code which I have done is below
XWPFDocument doc = new XWPFDocument(new ByteArrayInputStream(fileData.data));
XWPFWordExtractor msWord2007Extractor = new XWPFWordExtractor(doc);
wordText = msWord2007Extractor.getText();
When I'm executing this from line 1, I'm getting below exception.
org.apache.xmlbeans.SchemaTypeLoaderException: Cannot resolve type for handle _XY_Q=space|R=space@http://www.w3.org/XML/1998/namespace (schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.cttext7f5btype) - code 13 at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$XsbReader.readHandle(SchemaTypeSystemImpl.java:2021) at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$XsbReader.readTypeRef(SchemaTypeSystemImpl.java:2095) at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$XsbReader.loadAttribute(SchemaTypeSystemImpl.java:2922) at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$XsbReader.readAttributeData(SchemaTypeSystemImpl.java:2914) at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$XsbReader.finishLoadingType(SchemaTypeSystemImpl.java:2531) at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.resolveHandle(SchemaTypeSystemImpl.java:3507) at org.apache.xmlbeans.SchemaComponent$Ref.getComponent(SchemaComponent.java:104) at org.apache.xmlbeans.SchemaType$Ref.get(SchemaType.java:872) at org.apache.xmlbeans.impl.schema.SchemaPropertyImpl.getType(SchemaPropertyImpl.java:92) at org.apache.xmlbeans.impl.schema.SchemaTypeImpl.createElementType(SchemaTypeImpl.java:965) at org.apache.xmlbeans.impl.values.XmlObjectBase.create_element_user(XmlObjectBase.java:893) at org.apache.xmlbeans.impl.store.Xobj.getUser(Xobj.java:1657) at org.apache.xmlbeans.impl.store.Cur.getUser(Cur.java:2654) at org.apache.xmlbeans.impl.store.Cur.getObject(Cur.java:2647) at org.apache.xmlbeans.impl.store.Cursor._getObject(Cursor.java:995) at org.apache.xmlbeans.impl.store.Cursor.getObject(Cursor.java:2904) at org.apache.poi.xwpf.usermodel.XWPFParagraph.(XWPFParagraph.java:90) at org.apache.poi.xwpf.usermodel.XWPFDocument.onDocumentRead(XWPFDocument.java:146) at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:159) at org.apache.poi.xwpf.usermodel.XWPFDocument.(XWPFDocument.java:123) at org.wso2.carbon.registry.samples.handler.MSWordIndexer.getIndexedDocument(MSWordIndexer.java:42) at org.wso2.carbon.registry.indexing.solr.SolrClient.indexDocument(SolrClient.java:178) at org.wso2.carbon.registry.indexing.AsyncIndexer$IndexingTask.doWork(AsyncIndexer.java:203) at org.wso2.carbon.registry.indexing.AsyncIndexer$IndexingTask.run(AsyncIndexer.java:189) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)
This happens when the document contains some value. It indexed fine for an empty document.
Upvotes: 1
Views: 1276
Reputation: 21
I had the same exception while running my application in Weblogic. The poi-ooxml-schemas was packaged in the ear as applib, but the problem still didn't go away.
I came across with the solution in Alfresco Jira, which I post here for future reference.
The solution was to add hints for the classloader to prefer application packages:
<prefer-application-packages>
<package-name>schemaorg_apache_xmlbeans.system.sXMLCONFIG.*</package-name>
<package-name>schemaorg_apache_xmlbeans.system.sXMLLANG.*</package-name>
<package-name>schemaorg_apache_xmlbeans.system.sXMLSCHEMA.*</package-name>
<package-name>schemaorg_apache_xmlbeans.system.sXMLTOOLS.*</package-name>
</prefer-application-packages>
Upvotes: 2