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

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top