HTML в PDF с использованием iTextPdf: java.lang.NoSuchMethodError

У меня есть HTML-файл, который я пытаюсь преобразовать в pdf с помощью iTextPdf, но я получаю следующую ошибку:

java.lang.NoSuchMethodError: 
com.itextpdf.text.log.LoggerFactory.getLogger(Ljava/lang/Class;)
Lcom/itextpdf/text/log/Logger;

Библиотека выглядит следующим образом

  • itextpdf-5.4.5.jar
  • xmlworker-5.4.5.jar
  • slf4j-api-1.7.7.jar
  • slf4j-log4j12-1.7.7.jar

пожалуйста, помогите мне решить эту проблему, заранее спасибо

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

  • itextpdf-5.5.2
  • itextpdf-5.5.2-javadoc
  • itextpdf-5.5.2-источники
  • itext-pdfa-5.5.2
  • itext-pdfa-5.5.2-javadoc
  • itext-pdfa-5.5.2-источники
  • itext-xtra-5.5.2
  • itext-xtra-5.5.2-javadoc
  • itext-xtra-5.5.2-источники

java.lang.NoSuchMethodError: com.itextpdf.text.log.LoggerFactory.getLogger(Ljava/lang/Class;)Lcom/itextpdf/text/log/Logger;
        at com.itextpdf.tool.xml.net.FileRetrieveImpl.<clinit>(FileRetrieveImpl.java:67)
        at com.itextpdf.tool.xml.css.StyleAttrCSSResolver.<init>(StyleAttrCSSResolver.java:113)
        at com.itextpdf.tool.xml.css.StyleAttrCSSResolver.<init>(StyleAttrCSSResolver.java:102)
        at com.itextpdf.tool.xml.css.StyleAttrCSSResolver.<init>(StyleAttrCSSResolver.java:90)
        at com.itextpdf.tool.xml.XMLWorkerHelper.parseXHtml(XMLWorkerHelper.java:213)
        at com.itextpdf.tool.xml.XMLWorkerHelper.parseXHtml(XMLWorkerHelper.java:185)

Путь к классу

    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/itext-pdfa-5.5.2-javadoc.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/itext-pdfa-5.5.2-sources.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/itext-pdfa-5.5.2.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/itext-xtra-5.5.2-javadoc.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/itext-xtra-5.5.2-sources.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/itext-xtra-5.5.2.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/itextpdf-5.5.2-javadoc.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/itextpdf-5.5.2-sources.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/itextpdf-5.5.2.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/xmlworker-5.5.2.jar"/>

person user2582360    schedule 09.09.2014    source источник
comment
Этот метод является частью основной библиотеки itextpdf начиная с версии 5.1.1. У вас, вероятно, есть другая, более старая библиотека itextpdf в вашем пути к классам?   -  person mkl    schedule 09.09.2014
comment
Ваше редактирование выглядит так, как будто вы используете довольно свежий xmlworker с древним itextpdf. Пожалуйста, проверьте, есть ли в вашем пути к классам вторая банка itextpdf. Похоже, что такая вторая банка найдена раньше текущей и, следовательно, используется.   -  person mkl    schedule 09.09.2014
comment
@mkl Я добавил XMLWorker с той же версией, что и iText Pdf, пожалуйста, проверьте мои правки, но все равно получаю такое же исключение   -  person user2582360    schedule 09.09.2014
comment
Вы уверены, что среда вашего веб-приложения не заставляет вас устанавливать более старую версию itext? Например. используя некоторые одобренные библиотеки? Вы можете попробовать и проверить это, добавив код прямо перед тем, как ваш код столкнется с этим исключением, чтобы создать простой PDF-файл в файловой системе (например, используя метод createPdf в HelloWorld.java). Просматривая сгенерированный файл PDF, вы можете увидеть версию iText, которая создала файл.   -  person mkl    schedule 09.09.2014
comment
@mkl решил, как вы сказали, он загружал древний xmlworker, отлично работающий после того, как я очистил проект. большое спасибо, ваши комментарии мне очень помогли   -  person user2582360    schedule 09.09.2014


Ответы (1)


вы также должны поместить следующие файлы jar в свою библиотеку.

  • itext-pdfa
  • itext-xtra

согласно соответствующей версии. попробуй поставить весь требуемый код.

Посмотрите на транс стека, это может быть ссылка на ту строку класса, в которой произошла ошибка.

person Hardik Visa    schedule 09.09.2014
comment
Возможно, но класс и отсутствующий метод находятся в основной банке iText: sourceforge.net/p/itext/code/HEAD/tree/tags/iText_5_4_5/itext/ - person Bruno Lowagie; 09.09.2014
comment
Я добавил файлы jar, но все равно получаю ту же ошибку, я отредактировал свой вопрос, пожалуйста, посмотрите. - person user2582360; 09.09.2014
comment
Вы проверяли наличие com.itextpdf.text.log.LoggerFactory или нет? если нет, то проблема с файлом jar itextpdf - person Hardik Visa; 09.09.2014
comment
@HArdik спасибо за ваш ответ, jar xmlworker не загружался должным образом, теперь работает отлично :) - person user2582360; 09.09.2014