我正在尝试使用itext和java创建一个PDF/a文档,代码如下:
PdfAWrite writer = PdfAWriter.getInstance(myDoc, myStream, PdfAConformanceLevel.PDF_A_1A);
但我一直得到这个例外:
java.lang.NoClassDefFoundError: com/itextpdf/text/log/CounterFactory
at com.itextpdf.text.pdf.PdfAWriter.<init>(PdfAWriter.java:210)
at com.itextpdf.text.pdf.PdfAWriter.getInstance(PdfAWriter.java:86)
这是我的pom.xml
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.3</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-pdfa</artifactId>
<version>5.5.3</version>
</dependency>
有人能告诉我该怎么解决这个问题吗?
感谢
当我在多个jar中拥有上述类时,我会得到类似的异常。也许您应该检查类路径是否存在重复。也许同一个库的不同版本共存。如果您正在使用Eclipse,请查看pom的"Dependency hierarchy"视图,并尝试查找重复的。
看起来您错过了类路径中的itextpdf.jar
。下载jar并将其添加到类路径
Primefaces库的当前版本是指iText的旧版本。如果您尝试安装最新的iText发行版,您将最终出现以下错误:
java.lang.NoClassDefFoundError: com/lowagie/text/
这是因为在最近的iText版本中,包com/lowagie/text
已重命名为com/itextpdf/text
。因此,在修复之前,请使用建议的iText版本(2.1.7),或者至少验证包结构。
这可能很有用:http://www.mastertheboss.com/jboss-web/primefaces/export-your-datatable-to-excel-and-pdf-using-primefaces?showall=&start=1