Обзор
Итак, я пытался проанализировать файл 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:
Модули структуры проекта Intellij:
Intellij Структура проекта Библиотеки:
Редактировать 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:
Следы стека:
Редактировать 3
Это сработало в затмении !!! Тем не менее, это не меняет того факта, что я хотел бы исправить это в моей среде Intellij, если кто-то заинтересован в поиске странной проблемы.