【发布时间】: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 帮了我很多忙