我在日志文件中收到以下错误。
(java.lang.SecurityException:class “com.adventnet.snmp.snmp2.SecurityModelTable”的签名者信息 与其他类的签名者信息不匹配 包抛出
事情就是当我在命令下面运行时,它说jar验证了。
/usr/jdk/instances/jdk1.5.0/bin/jarsigner -verify -verbose Jarfile.jar
如果jar文件已经过验证,那么该怎么办?
答案 0 :(得分:17)
检查不同版本的相同包的pom依赖关系树。
我遇到了itext-2.1.7
这个问题,其中包括旧版bouncycastle's bcpkix
,后面version
包含在其他地方。
使用此pattern
:
<dependency>
package X
<exclusions>
<exclusion>
old package Y
</exclusion>
</exclusions>
</dependency>
<dependency>
latest package Y
</dependency>
更新:要检查package_Y的依赖关系树详细信息,您可以使用mvn dependency:tree -Dverbose -Dincludes=package_Y
。有关解决依赖关系树问题的更多信息,请检查maven documentation。 Eclipse也有很好的依赖树查看器。
答案 1 :(得分:15)
这意味着您在同一个包中有两个或更多类具有不同的签名数据。通常这意味着类来自不同的JAR,其中一个是签名的,另一个是未签名的。
答案 2 :(得分:1)
我在Windows上运行Eclipse(Mars)中的Scala / Spark项目时遇到此异常,这使我无法在IDE中调试和运行项目。该项目使用了Maven pom.xml文件。需要一段时间才能解决,所以我在这里发布了详细的步骤来帮助其他人:
您可以在一个看起来像这样的部分找到它:
+ - org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.6.0:提供
+ - javax.servlet:servlet-api:jar:2.5:提供
您要在上面排除重复类的Maven组ID是:hadoop-mapreduce-client-core
在违规软件包之后添加一个排除部分,列出pom.xml中排除的groupid。在我的例子中,这是groupid javax.servlet。
请注意,您无法通过重新排序Java构建路径来解决此问题,因为有些人已发布类似问题。
答案 3 :(得分:0)
java.lang.SecurityException:class“org.bouncycastle.asn1.ASN1ObjectIdentifier”的签名者信息与同一包中其他类的签名者信息不匹配
答:当我试图保护PDF密码时,我也遇到了同样的例外。我在下面的jar中添加了解决方法。
◾itextpdf-5.2.1.jar ◾bcmail-jdk16-1.46.jar ◾bcprov-jdk16-1.46.jar ◾bctsp-jdk16-1.46.jar
答案 4 :(得分:0)
在我的程序中,我已经加载了两个版本的相同软件包。一个是boprov-jdk15-140.jar
,另一个是bcprov-jdk15-151.jar
。这两者是冲突的。
在JAR包的MANIFEST.MF文件中,它有以下摘要:
Name: org/bouncycastle/crypto/digests/SM3Digest.class
SHA1-Digest: xxxxxxxx
两个JAR文件具有不同的SHA1-Digest信息。
答案 5 :(得分:0)
在我的情况下,我有:
Caused by: java.lang.SecurityException: class "org.bouncycastle.util.Strings"'s signer information does not match signer information of other classes in the same package
这是一个有很多依赖项和mvn依赖项的项目:树信息对我没有帮助。
以下是我解决问题的方法:
问题解决了。
答案 6 :(得分:0)
我在Spring Boot应用程序中遇到了这个问题。我的问题是,我的构建路径中有Junit,其中包含Org.hamcrest.Matchers。*和Hamcrest,后者位于eclipse存储库中pom.xml中的Spring框架库中。所以我要做的是从构建路径中删除Junit。仅在我的pom.xml中包含Junit。因此,我的应用程序依赖于Junit和* Matchers的Maven。因此,您不知何故需要两个罐子。也许作为库和配置文件。