如何避免 bcprov-jdk16-1.45.jar while 运行 应用程序通过 POM 入口

How to avoid bcprov-jdk16-1.45.jar while running the application through POM entry

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

这是一个已知问题。 BC 破坏了它们的 API in-between 版本,当你的 CLASSPATH 中有两个不同的 BC 版本时,你会得到非常奇怪的错误(这可能会有所不同,具体取决于首先加载的版本)。我看到您仍在使用旧的 iText(不是 iText 7),这意味着您可以切换到 iTextG。

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

  • Java 类 未列入 GAE 白名单或 Android 已被删除,
  • 调整了在云上下文中没有意义的特定文件操作,
  • Bouncycastle 已替换为 SpongyCastle。

BouncyCastle 和 SpongyCastle 是相同的,除了它们的包名称和安全提供商的名称("BC" 与 "SC")。由于这些差异,两个不同的版本,例如 WebLogic 中的 BC 1.45 版和 iTextG 应用程序中的 SpongyCastle 1.49 版不会冲突。

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