先看下maven中心仓库bcprov有哪些版本,目前遇到的最多情况就是有关jdk16和jdk5on不兼容的问题,可以看下两个版本的对应发布日期。jdk16 的最新版本1.46发布时间是2011年,jdk15on最老版本1.46的发布时间是2012年。
在尝试将jdk16的sm2部分调用方式调整为jdk15on调用方式之后,项目原来的sm2无法正常加解密了,升级失败。但对接方提供的是jdk15on,想着把jdk15on的包路径修改一下,这样就可以和jdk16共存,之前也涂鸦过一篇《解决多版本依赖jar(需共存时的)冲突问题》,我本地使用的是openjdk可以正常运行,而java hotspot校验包签名导致运行失败。所以这就产生了第一个解决方案,如果运行环境使用的是openjdk可以修改包路径解决共存问题,修改包路径可以使用工具jar-jar,也可以使用maven插件maven-shade-plugin。
第二种解决方案是修改低版本的jdk16包路径,引用到jdk16组件的地方调整下包路径,在openjdk和java hotspot下均可正常运行,这也符合正常逻辑,改旧不改新。
第三种解决方案是把jdk16和jdk15on分别放在两个地方,通常业务系统A会通过统一的出口系统B去对接外部系统,加解密这块正常放在B系统,对接不同的渠道一般会有不同的策略。所以,可以把加解密这个工作放到系统A特殊处理下,B系统在对应的策略中直接转发。
时间宝贵,随手记录,感谢阅读,希望本文能够给您带来一丝启发和帮助。
标签:bcprov,兼容问题,jdk16,路径,jar,jdk15on,版本 From: https://blog.51cto.com/u_5095466/8586735