Проблема с зависимостями для Apache POI в Intellij IDEA. Непоследовательные ошибки - PullRequest
0 голосов
/ 04 сентября 2018

Обзор

Итак, я пытался проанализировать файл Excel .xlsx с помощью Apache POI, а затем вывести файл PDF с помощью Apache PDFBox. Часть PDFBox отлично работает в моей среде Intellij, но не настолько, как часть POI ...

Проблема

Когда я запускаю программу, я получаю либо

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException

или

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap

на линии

XSSFWorkbook workbook = new XSSFWorkbook(new File("MY_FILE.xlsx"));

Хотя ВСЕ JAR-файлы находятся во внешних библиотеках!

Что я пробовал

Теперь, несмотря на то, что это очевидная проблема с зависимостями, я попробовал почти все комбинации зависимостей maven, как было предложено в других аналогичных вопросах SO, а также проверил всю официальную Информацию о компонентах POI и FAQ. Хотя я, кажется, делаю все на месте, кажется, что случайно не нашел ни одного из двух вышеупомянутых классов. Ниже приведены несколько изображений моей среды, которые могут помочь отладить проблему зависимости!

Внешние библиотеки проекта Intellij: Dependencies

Модули структуры проекта Intellij: Compile Dependencies

Intellij Структура проекта Библиотеки: Maven Dependency

Редактировать 1

К сожалению, я уже пытался удалить 'xmlbeans-2.3.0.jar' из зависимости 'maven' org.apache.poi: ooxml-schemas: 1.3 'и просто оставить другие файлы jar, а также удалить эту зависимость как целое без удачи. Также это не проект Intellij maven, поэтому у меня нет pom.xml в моих каталогах проектов. В моем проекте используется встроенное управление зависимостями Intellij, которое позволяет мне добавлять зависимости от maven с учетом расположения ресурса.

Редактировать 2

Даже после загрузки двоичных файлов с сайта Apache POI и последующего добавления всех JAR-файлов непосредственно в мою среду (вообще без maven), проблема остается той же, что описана выше. Смотри ниже ...

Внешние библиотеки проекта Intellij: Mavenless

Следы стека:

ST1 ST2

Редактировать 3

Это сработало в затмении !!! Тем не менее, это не меняет того факта, что я хотел бы исправить это в моей среде Intellij, если кто-то заинтересован в поиске странной проблемы.

1 Ответ

0 голосов
/ 04 сентября 2018

После прохождения множества тупиковых ситуаций выясняется, что основной причиной проблемы был тот факт, что моя установка Java 8 JRE по какой-то странной причине включала два JAR-файла POI. После удаления JAR и очистки ссылок из моего JRE он работает правильно! Если вы столкнулись с подобной проблемой, перейдите на <JDK_HOME>/jre/lib/ или <JDK_HOME>/jre/lib/ext, чтобы найти соответствующие POI JAR для удаления, а затем в Intellij удалите ссылку JRE, а затем добавьте ее обратно. После быстрой сборки / перестройки все должно работать как положено!

...