Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java `运行JAR时,JCE无法对提供程序BC`进行身份验证_Java_Scala_Jar_Bouncycastle - Fatal编程技术网

Java `运行JAR时,JCE无法对提供程序BC`进行身份验证

Java `运行JAR时,JCE无法对提供程序BC`进行身份验证,java,scala,jar,bouncycastle,Java,Scala,Jar,Bouncycastle,在我的scala项目中,我使用“org.bouncycastle”%“bcprov-jdk14”%“1.51”进行加密。 如果它在Scala IDE中测试我的项目,它就可以正常工作。但一旦我创建了一个JAR并尝试通过java-JAR运行它…它就会抛出一个异常:线程“main”java.lang中的异常。安全异常:JCE无法验证提供者BC 我用它来制作一个JAR,下面是我的java-version输出: java version "1.7.0_72" Java(TM) SE Runtime Env

在我的scala项目中,我使用
“org.bouncycastle”%“bcprov-jdk14”%“1.51”
进行加密。
如果它在Scala IDE中测试我的项目,它就可以正常工作。但一旦我创建了一个JAR并尝试通过
java-JAR运行它…
它就会抛出一个异常:
线程“main”java.lang中的异常。安全异常:JCE无法验证提供者BC

我用它来制作一个JAR,下面是我的
java-version
输出:

java version "1.7.0_72"
Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
Java HotSpot(TM) Server VM (build 24.72-b04, mixed mode)
[info] Merging files...
[warn] Merging 'META-INF/BCKEY.DSA' with strategy 'discard'
[warn] Merging 'META-INF/BCKEY.SF' with strategy 'discard'
[warn] Merging 'META-INF/LAMBDAWO.SF' with strategy 'discard'
[warn] Merging 'META-INF/MANIFEST.MF' with strategy 'discard'
[warn] Merging 'reference.conf' with strategy 'concat'
[warn] Merging 'rootdoc.txt' with strategy 'concat'
[warn] Strategy 'concat' was applied to 2 files
[warn] Strategy 'discard' was applied to 4 files
制作罐子时,我看到以下输出:

java version "1.7.0_72"
Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
Java HotSpot(TM) Server VM (build 24.72-b04, mixed mode)
[info] Merging files...
[warn] Merging 'META-INF/BCKEY.DSA' with strategy 'discard'
[warn] Merging 'META-INF/BCKEY.SF' with strategy 'discard'
[warn] Merging 'META-INF/LAMBDAWO.SF' with strategy 'discard'
[warn] Merging 'META-INF/MANIFEST.MF' with strategy 'discard'
[warn] Merging 'reference.conf' with strategy 'concat'
[warn] Merging 'rootdoc.txt' with strategy 'concat'
[warn] Strategy 'concat' was applied to 2 files
[warn] Strategy 'discard' was applied to 4 files

如何解决此问题?

检查sbt程序集是否在生成的jar(META-INF/中)中未包含数字签名文件,因为它们将随着jar更改而变得无效,因此需要排除它们。或者,您可能需要找到一种方法,从它的“真实”jar加载bcprov,因为该jar已签名。@lmm如何排除META-INF/文件?此外,我还用一些相关的(我想)汇编输出更新了我的帖子。也许这会进一步澄清发生了什么。看起来签名被丢弃了,这比包含它们但让它们无效要好。对我来说,这表明您需要一个有效的签名,该签名由例如确认。因此,不能将sbt汇编与bcprov一起使用;您必须找到一种方法来使用未修改的bcprov JAR。@谢谢,我在您提供的一个线程中找到了一个解决方案,即此注释:。奇怪的是,由于某种原因,它被否决了。也许这是一种不好的做法还是什么?我认为更多的是,对于许多部署模型来说,它不太实用,因为您必须修改JRE本身。