【问题标题】:HTML to PDF Using iTextPdf : java.lang.NoSuchMethodError使用 iTextPdf 将 HTML 转为 PDF:java.lang.NoSuchMethodError
【发布时间】:2014-09-09 05:59:43
【问题描述】:

我有 HTML 文件,我正在尝试使用 iTextPdf 将其转换为 pdf,但出现以下错误,

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

lib如下

  • 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-sources
  • itext-pdfa-5.5.2
  • itext-pdfa-5.5.2-javadoc
  • itext-pdfa-5.5.2-sources
  • itext-xtra-5.5.2
  • itext-xtra-5.5.2-javadoc
  • itext-xtra-5.5.2-sources

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"/>

【问题讨论】:

  • 该方法是核心 itextpdf 库的一部分,至少从版本 5.1.1 开始。您的类路径中可能还有另一个较旧的 itextpdf 库吗?
  • 您的编辑看起来像是使用了一个相当新的 xmlworker 和一个古老的 itextpdf。请检查您的类路径中是否有第二个 itextpdf jar。看起来第二个 jar 是在您当前的之前找到的,因此被使用了。
  • @mkl 我添加了与 iText Pdf 版本相同的 XMLWorker,请检查我的编辑,但仍然遇到相同的异常
  • 您确定您的 Web 应用程序环境不会强制您使用较旧的 itext 版本吗?例如。使用一些认可的库?您可以尝试通过在代码运行到该异常之前添加代码来测试它,以在文件系统中创建一个简单的 PDF(例如,使用 HelloWorld.java 中的方法 createPdf)。检查生成的 PDF 文件,您可以看到创建该文件的 iText 版本。
  • @mkl 已解决,正如您所说,它正在加载古老的 xmlworker,在我清除项目后工作正常。非常感谢,你们的 cmets 帮了我很多忙

标签: java itext itextpdf


【解决方案1】:

您还必须将以下 jar 文件放入您的库中。

  • itext-pdfa
  • itext-xtra

根据适当的版本。 尝试放置整个所需的代码。

查看堆栈恍惚,它可能是指发生错误的那个类行。

【讨论】:

  • 可能,但是类和“缺失”方法在核心 iText jar 中:sourceforge.net/p/itext/code/HEAD/tree/tags/iText_5_4_5/itext/…
  • 我已经添加了 jar 文件,但我仍然遇到同样的错误,我已经编辑了我的问题,请看一下。
  • 您检查 com.itextpdf.text.log.LoggerFactory 是否可用?如果没有,那么关于 itextpdf jar 文件的一些问题
  • @HArdik 谢谢你的回答,xmlworker jar 没有正确加载,现在可以正常工作了 :)
猜你喜欢
  • 2021-01-15
  • 2017-08-16
  • 1970-01-01
  • 2016-01-14
  • 2018-04-07
  • 2015-04-01
  • 2012-08-07
  • 2013-11-07
  • 1970-01-01
相关资源
最近更新 更多