barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

вторник, 17 января 2012 г.

kettle в контейнере сервлетов и dom4j / poi - зависимости

При выполнении kettle-преобразований в контейнере сервлетов (по крайней мере, на Tomcat) библиотеки poi и dom4j, от которых зависит kettle, нужно не включать в war-файл, а класть в директорию lib/ томката, иначе, если библиотеки присутствуют только в war-нике, kettle вообще их не видит, если же они присутствуют и там, и там, то происходят ошибки вида:
java.lang.ClassCastException: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory
java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catalina/loader/WebappClassLoader) previously initiated loading for a different type with name "org/apache/poi/ss/usermodel/Workbook"
Что говорит о том, видимо, что класс загружается дважды разными класс-лоадерами.
Вообще, в /lib томката придется положить следующие библиотеки для случая работы с Excel (xls / xlsx) таблицами:

  • dom4j
  • jaxen
  • poi-ooxml
  • poi
  • xbean
  • oooxml-schemas

Комментариев нет:

Отправить комментарий