如何通过POM条目运行应用程序时避免使用bcprov-jdk16-1.45.jar

时间:2018-04-05 23:21:19

标签: java itext bouncycastle

我有一个在Weblogic 12.1.3中运行的Java 8应用程序。该应用程序使用iText 5.5.9,BC的最低版本为1.49。该应用程序正在Weblogic中部署为WAR文件。我可以看到war文件具有适当版本的BC。但在运行时它从WebLogic maven插件路径和使用BC 1.45。有没有什么办法可以通过编辑POM条目或编辑WebLogic.xml来避免这种情况。如果我从我的本地服务器中删除BC 1.45 jar它运行成功。但我无法从更高环境的服务器中删除jar。所以请帮忙。感谢。

1 个答案:

答案 0 :(得分:1)

这是一个已知问题。 BC打破了他们的API中间版本,当你的CLASSPATH中有两个不同的BC版本时,你会得到非常奇怪的错误(根据首先加载的版本可能会有所不同)。我发现你还在使用旧的iText(不是iText 7),这意味着你可以切换到iTextG。

iTextG中的G代表Google,创建iTextG是为了避免一些问题。例如:

  • 未删除在GAE或Android上使用的白名单的Java类,
  • 修改了在云环境中没有意义的特定文件操作,
  • Bouncycastle被SpongyCastle取代。

BouncyCastle和SpongyCastle是相同的,除了他们的包名和安全提供者的名字(" BC"与#34; SC")。由于存在这些差异,两个不同的版本,例如WebLogic中的BC版本1.45和iTextG应用程序中的SpongyCastle版本1.49都不会发生冲突。

这对于在Android上使用iText是必要的,因为Android附带旧版本的BC(就像您的WebLogic附带旧版本一样)。