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

标签 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。所以请帮忙。谢谢。

最佳答案

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

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

  • 未列入白名单以在 GAE 或 Android 上使用的 Java 类已被删除,
  • 调整了在云环境中没有意义的特定文件操作,
  • BouncycaSTLe 被 SpongyCaSTLe 取代。

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

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

    关于java - 通过POM入口运行应用程序时如何避免bcprov-jdk16-1.45.jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49682961/

    相关文章:

    java - JTree节点编辑路径比较始终为真

    sockets - 使用 Java 发送零数据 TCP/IP 数据包

    java - iText PdfTextExtractor getTextFromPage 异常 "Error reading string at file pointer"

    java - 充气城堡 : PEMReader => PEMParser

    java - JDBC 准备语句,编译器无法识别 set 方法

    java - 使用 Rectangle 选择 iText 中的文本

    java - 使用 iText 从 PDF 条形码图像中检索文本

    java - ORA-01017: 用户名/密码无效;使用 wss4j 时登录被拒绝

    c# - 如何在 C# (Mono/Xamarin) 中使用 Bouncy CaSTLe 导入签名的 SSL 证书?

    java - 我可以使用动态规划来降低时间复杂度吗?