使用itext库签名PDF时引发错误

使用itext库签名PDF时引发错误,itext,digital-signature,Itext,Digital Signature,请帮助我,这是我第一次使用pdf签名。我想用证书签署一个pdf,但它给我带来了我所说的错误,我正在使用itext-5.0.5用netbeans8.2 JAVA开发一个桌面应用程序。我读过一些关于依赖关系和版本的文章,我真的不知道如何解决这个问题。我感谢你的帮助,如果你能一步一步地向我解释,那就太好了。多谢各位 Exception in thread "Thread-0" java.lang.NoClassDefFoundError: org/bouncycastle/asn1/DERObject

请帮助我,这是我第一次使用pdf签名。我想用证书签署一个pdf,但它给我带来了我所说的错误,我正在使用itext-5.0.5用netbeans8.2 JAVA开发一个桌面应用程序。我读过一些关于依赖关系和版本的文章,我真的不知道如何解决这个问题。我感谢你的帮助,如果你能一步一步地向我解释,那就太好了。多谢各位

Exception in thread "Thread-0" java.lang.NoClassDefFoundError: org/bouncycastle/asn1/DERObject
at com.itextpdf.text.pdf.PdfSignatureAppearance.getAppearance(PdfSignatureAppearance.java:409)
at com.itextpdf.text.pdf.PdfSignatureAppearance.preClose(PdfSignatureAppearance.java:950)
at com.itextpdf.text.pdf.PdfSignatureAppearance.preClose(PdfSignatureAppearance.java:897)
at com.itextpdf.text.pdf.PdfStamper.close(PdfStamper.java:192)
at clases.Metodos.firmarFactura(Metodos.java:279)
at clases.VendedorHilo.run(VendedorHilo.java:49)
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.asn1.DERObject
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 6 more

错误告诉您在类路径中没有BouncyCastle。对你的问题的一般回答是:

检查用于BouncyCastle的iText版本的POM文件 你需要的版本。下载BouncyCastle版本,并将其放入您的 类路径

然而,出于某种原因,您使用的是2010年11月的iText的一个古老版本,而当时的iText版本没有POM文件

重要提示:在数字签名环境中,这是一个非常糟糕的想法!自2010年以来,数字签名的世界发生了变化,这种变化导致数字签名功能比2010年提供的功能更加安全。请告知您的雇主,他要求您创建一种过时的签名类型

如果您的雇主有意以老式方式创建签名,您可以检查旧的iText存储库,并搜索iText 5.0.5。你会在花园里发现几个有弹性的城堡罐子。下载bcmail-jdk14-138.jar、bcprov-jdk14-138.jar和bctsp-jdk14-138.jar,并将它们放在类路径中

重要提示:由于BouncyCastle的性质,如果类路径中有多个版本的BouncyCastle,则可能会出现奇怪的异常。这是您可能希望使用更新版本的iText的另一个原因


注意:如果你把你的项目变成一个Maven项目,那就容易多了。在这种情况下,在iText上声明对最新版本的依赖就足够了,Maven将代替您完成所有繁重的工作。

将bouncycastle依赖项添加到您的项目中。非常感谢,我下载并添加了您评论的JAR。我会接受你对未来项目的所有建议。这个项目是一项我必须很快完成的任务,在你的帮助下我能够解决。他的反应很好。