Problema con la chiamata parseToString di Tika
-
27-10-2019 - |
Domanda
Sto usando POI per estrarre i dati dal file excel.(la quinta colonna nel foglio Excel contiene i nomi dei file che esistono nel mio filesystem) Eseguo il ciclo sulle righe della tabella (estraggo il contenuto della cella con POI) e per ogni riga creo un'istanza di Tika, e analizzo i file che hanno chiamato nella 5a colonna con Tika "parseToString (file)", quando il file è documento di Office(excel, ppt, word) Ottengo questo errore:
Exception in thread "AWT-EventQueue-0" java.lang.NoSuchFieldError: filesystem
at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:185)
at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:131)
at org.apache.tika.parser.microsoft.WordExtractor.parse(WordExtractor.java:61)
at org.apache.tika.parser.microsoft.OfficeParser.parse(OfficeParser.java:182)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:197)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:197)
at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:135)
at org.apache.tika.Tika.parseToString(Tika.java:357)
at org.apache.tika.Tika.parseToString(Tika.java:423)
at org.apache.tika.Tika.parseToString(Tika.java:403)
at HP.BuildMailExcelDoc.getTextFromTika(BuildMailExcelDoc.java:355)
at HP.BuildMailExcelDoc.addExcelDoc(BuildMailExcelDoc.java:314)
at HP.BuildMailExcelDoc.buildDoc(BuildMailExcelDoc.java:196)
at HP.BuildMailExcelDoc.buildMailDoc(BuildMailExcelDoc.java:102)
at HP.BuildMailExcelDoc.indexDirectory(BuildMailExcelDoc.java:69)
at HP.BuildMailExcelDoc.indexDirectory(BuildMailExcelDoc.java:78)
at HP.BuildMailExcelDoc.buildDoc(BuildMailExcelDoc.java:63)
at HP.IndexGUI$1.mouseClicked(IndexGUI.java:281)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Penso che questo problema si verifichi come risultato dell'uso annidato in POI. una volta nella tabella Excel e poi di nuovo nella chiamata di analisi Tika.
Sembra ragionevole?come posso gestire questo problema?
Grazie :-) Reuth
Soluzione
Sembra che tu abbia due copie di PDI sul tuo classpath.Immagino che tu abbia la nuova versione fornita da Tika, insieme a una più vecchia.Il problema è che Java sta raccogliendo la prima versione sul tuo classpath, che è quella vecchia.
La tua soluzione è rimuovere la vecchia versione dal tuo classpath.Consulta questa voce di domande frequenti sui PDI per sapere come identificare la provenienza della vecchia copia