Spring MVC 与 itextpdf 集成实现PDF签名的maven包依赖冲突

itextpdf 是一个对PDF文档进行操作的使用框架,PDF的数字签名使用 itextpdf 也能方便的实现,比如

  1. Digital Signatures for PDF documents - iText
  2. iText in Action: Chapter 12: Protecting your PDF

然而,将 itextpdf 集成到Spring MVC项目中时,二者的依赖包回存在冲突,以 itextpdf 5.4.4 和 spring-webmvc 3.2.2 RELEASE 为例,其依赖关系如下:

  • itextpdf 5.4.4 -> bcprov-jdk15on 1.49
  • spring-webmvc 3.2.2 RELEASE -> itext 2.1.7 -> bcprov-jdk14 138
这两个 bcprov 包会冲突,从而产生java.lang.ExceptionInInitializerError错误:signer information does not match signer information of other classes in the same package。

解决方法是使用高版本的bcprov取代低版本的,在pom.xml文件中移除spring-webmvc对bcprov的依赖:

		
			org.springframework
			spring-webmvc
			${spring.version}
			
				
					bouncycastle
					bcprov-jdk14
				
			
		


如果使用到其他对bcprov-jdk14 138的依赖,也排除:

		
			org.xhtmlrenderer
			core-renderer
			R8
			
				
					bouncycastle
					bcprov-jdk14
				
			
		


然后使用高版本的包:

		
			org.bouncycastle
			bcprov-jdk15on
			1.49
		




你可能感兴趣的:(J2EE)