Невозможно создать экземпляр XSSFWorkbook с помощью poi-3.9 - сбой во время выполнения без ошибки определения класса

При выполнении проекта / кода, который создает XSSFWorkbook, система не работает, ошибка определения класса не найдена для org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFileRecoveryPr

У меня есть все банки poi 3.9 и баночка с необходимыми условиями.

Интересно то, что тот же проект / код отлично работает в системе моего друга.

Проект представляет собой проект JSF 1.2, построенный на RAD.

Может ли это быть связано с пакетом установки MS Office в моей системе? Кроме того, почему класс вызывается во время создания книги, нигде не удалось найти никакой документации.

Пожалуйста, помогите решить проблему, так как я не могу продолжить тестирование проекта.

1 ответ

Из записи часто задаваемых вопросов по Apache POI: "Я использую jar poi-ooxml-schemas, но мой код не работает с"java.lang.NoClassDefFoundError: org/openxmlformats/schemas/ кое-что ":

Чтобы использовать новые форматы файлов OOXML, для POI требуется jar, содержащий файлы формата XSD, скомпилированные XMLBeans. Эти XSD, однажды скомпилированные в классы Java, живут в пространстве имен org.openxmlformats.schemas.

Доступны два файла jar, как описано в разделе обзора компонентов. Полный jar всех схем - ooxml-schemas-1.1.jar, и в настоящее время он составляет около 15 МБ. Меньшая банка poi-ooxml-schemas составляет всего около 4 Мб. Этот последний jar-файл содержит только обычно используемые части.

Многие пользователи предпочитают использовать меньшую банку poi-ooxml-schemas для экономии места. Однако jar poi-ooxml-schemas содержит только те XSD и классы, которые обычно используются, как это определено в модульных тестах. Время от времени вы можете пытаться использовать часть формата файла, который не включен в минимальный файл poi-ooxml-schemas. В этом случае вам следует перейти на полную версию ooxml-schemas-1.1.jar. В более долгосрочной перспективе вы также можете отправить новый модульный тест, в котором используются дополнительные части XSD, так что будущий jar poi-ooxml-schemas будет включать их.

Таким образом, в краткосрочной перспективе вам просто нужно переключиться с poi-ooxml-schemas баночка к большему (и полная) ooxml-schemas баночка. В долгосрочной перспективе вам необходимо отправить тест junit в проект Apache POI, в котором используется нужный класс CT, и этот класс будет автоматически включен в меньший poi-ooxml-schemas баночка в будущем выпуске.

Другие вопросы по тегам