我使用AdvancedInstaller 9.8将javacode(webapplication)构建到安装程序。通常我的应用程序运行正常。使用Advanced Installer 9.8创建安装程序后,安装程序大小约为55 MB。但是高级安装程序中有一个选项可以压缩为安装而制作的所有罐子。如果我压缩罐子,安装程序大小约为16 MB。但是当我使用Advanced Installer 9.8进行压缩时,我在执行 KeyPairGenerator kpg = KeyPairGenerator.getInstance(“RSA”,“BC”)行时会遇到异常(如标题中所述);在我的代码中。 KeyPairGenerator再次来自java.security。*;
有人可以告诉我,这个问题可能是什么原因。我知道在使用AdvancedInstaller进行压缩时,可能会出现Advanced Installer压缩的问题。但我的问题是在java方面通常可能出现的问题,以解决这个问题。 (我的意思是可能的原因,就像任何文件可能被损坏(或)等任何其他原因),以便我可以从那里开始工作。
答案 0 :(得分:25)
在代码前添加此行:
Security.addProvider(new BouncyCastleProvider());
答案 1 :(得分:3)
通过替换最新的bcprov-jdk15-.jar得到修复。我之前的版本是bcprov-jdk15-135.jar,它创建了上面提到的问题。
答案 2 :(得分:3)
除了检查jre配置外,您还需要检查
1.检查配置文件中是否设置了java home
2.检查用于应用程序的java环境
3.检查\ jre \ lib \ security \ java.security是否有bouncycastle提供程序条目。 ie security.provider.9 = org.bouncycastle.jce.provider.BouncyCastleProvider
4.还要检查弹跳城堡jar是否已添加到\ jre \ lib \ ext \ bcprov-jdk15on-147.jar(最新版本适用于java 1.5& 1.6
答案 3 :(得分:3)
您可以通过使用以下代码编辑java.security来创建静态块来添加安全提供程序:
static {
Security.addProvider(new BouncyCastleProvider());
}
如果您正在使用maven项目,则必须在项目的pom.xml文件中为BouncyCastleProvider添加依赖项,如下所示。
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.47</version>
</dependency>
如果您使用的是普通的java项目,那么您可以从下面给出的链接添加下载bcprov-jdk15on-147.jar并编辑您的类路径。
http://www.java2s.com/Code/Jar/b/Downloadbcprovextjdk15on147jar.htm
答案 4 :(得分:1)
可以通过导入以下内容来解决问题:
import org.bouncycastle.jce.provider.BouncyCastleProvider;
然后将以下代码放在您的类方法中:
Security.addProvider(new BouncyCastleProvider());