gpt4 book ai didi

java - BouncycaSTLe 依赖冲突

转载 作者:行者123 更新时间:2023-12-02 10:38:47 25 4
gpt4 key购买 nike

我有一个使用 Spring Boot 创建的 Web 应用程序。我添加了 jasper 报告、iText 和 bouncycaSTLe maven 依赖项。 Jasper 和 iText 都包含 bouncycaSTLe 库,因此现在 Web 应用程序无法正常工作。

错误是:java.security.NoSuchProviderException:JCE 无法验证提供程序 BC。请注意,我已经添加了以下代码:Security.addProvider(new BouncyCaSTLeProvider());

这在使用 spring boot 嵌入式 tomcat 时完美工作,但在导出到在 wildfly 服务器上运行的 war 文件时则不然。

这是我声明 pom 的方式。

<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
<version>1.58</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.4.0</version>
<exclusions>
<exclusion>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk14</artifactId>
</exclusion>
<exclusion>
<groupId>org.bouncycastle</groupId>
<artifactId>bcmail-jdk14</artifactId>
</exclusion>
</exclusions>
</dependency>

创建 war 文件后,以下是包含的库列表:

  • bcmail-jdk14-138
  • bcprov-jdk14-138

即使我指定它作为提供的,bcpkix-jdk15on 也没有被包含

最佳答案

直接引用Maven docs

provided

This is much like compile, but indicates you expect the JDK or a container to provide the dependency at runtime. For example, when building a web application for the Java Enterprise Edition, you would set the dependency on the Servlet API and related Java EE APIs to scope provided because the web container provides those classes. This scope is only available on the compilation and test classpath, and is not transitive.

换句话来说,它使用标记为“提供”的 .jar 来编译(和测试)您的软件,但是当您打包它时,它不会包含在 .war 中:您期望运行时系统提供这些类的(可能是不同的)版本。

尝试删除该依赖项的范围并将其更改为“编译”,看看是否可以解决您的问题。

关于java - BouncycaSTLe 依赖冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53083546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com