Проблема с вызовом Tika parseToString - PullRequest
1 голос
/ 07 сентября 2011

Я использую POI для извлечения данных из файла Excel. (5-й столбец в листе Excel содержит имена файлов, которые существуют в моей файловой системе) Я перебираю строки таблицы (извлекаю содержимое ячейки с помощью POI), и для каждой строки я создаю экземпляр Tika и анализирую файлы с именами в 5-м столбце с помощью Tika "parseToString (file)", когда файл является документом Office (Excel, PPT, слово) Я получаю эту ошибку:

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)

Я думаю, что эта проблема возникает в результате вложенного использования в POI. один раз в таблице Excel, а затем еще раз в вызове синтаксического анализа Tika.

Это звучит разумно? как я могу справиться с этой проблемой?

Спасибо :-) Reuth

1 Ответ

4 голосов
/ 07 сентября 2011

Похоже, у вас есть две копии POI на вашем пути к классам.Я предполагаю, что у вас есть новая версия, которую поставила Тика, вместе со старой.Проблема в том, что Java выбирает первую версию вашего пути к классам, которая является старой.

Ваше решение состоит в том, чтобы удалить старую версию из вашего пути к классам.См. эту запись FAQ по POI , чтобы узнать, как найти старую копию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...