签名者信息不匹配

我在日志文件中收到以下错误。

(java.lang.SecurityException:class“com.adventnet.snmp.snmp2.SecurityModelTable”的签名者信息与抛出的同一个包中其他类的签名者信息不匹配

事情就是当我在命令下面运行时,它说jarvalidation了。

/usr/jdk/instances/jdk1.5.0/bin/jarsigner -verify -verbose Jarfile.jar 

如果jar文件已经过validation,那么这个问题怎么会出现?

这意味着您在同一个包中有两个或更多类具有不同的签名数据。 通常这意味着类来自不同的JAR,其中一个是签名的,另一个是未签名的。

检查不同版本的相同包的 pom依赖关系树。

我有这个问题与itext-2.1.7包括旧bouncycastle's bcpkix ,其他version包含在其他version

使用此pattern

  package X   old package Y     latest package Y  

更新:要检查package_Y的依赖关系树详细信息,可以使用mvn dependency:tree -Dverbose -Dincludes=package_Y 。 有关更多信息,请查看有关解决依赖关系树问题的maven文档 。 Eclipse也有很好的依赖树查看器。

我在Windows上运行Eclipse(Mars)中的Scala / Spark项目时遇到此exception,这使我无法在IDE中调试和运行项目。 该项目使用了Maven pom.xml文件。 需要一段时间才能解决,因此我在此处发布详细步骤以帮助其他人:

  1. 转到项目pom.xml文件所在的文件夹
  2. 运行命令:mvn dependency:tree -Dverbose> Depends.Txt确保没有Depends.Txt,否则它将被覆盖!
  3. 在Depends.Txt文件中搜索Eclipse IDE抱怨的unsigned类。 就我而言,它是javax.servlet。
  4. 您可以在看起来像这样的部分中找到它:

    + – org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.6.0:提供

    + – javax.servlet:servlet-api:jar:2.5:已提供

  5. 要在上面排除重复类的Maven组ID是:hadoop-mapreduce-client-core

  6. 在违规包之后添加一个排除部分,列出pom.xml中排除的groupid。 在我的例子中,这是groupid javax.servlet。

  7. 请注意,您无法通过重新排序Java构建路径来解决此问题,因为有些人已针对类似问题发布了这些路径。

java.lang.SecurityException:类“org.bouncycastle.asn1.ASN1ObjectIdentifier”的签名者信息与同一包中其他类的签名者信息不匹配

Ans:当我试图保护PDF密码时,我也遇到了同样的exception。

我在下面的jar子里加了解决方法。

◾itextpdf-5.2.1.jar◾bcmail-jdk16-1.46.jar◾bcprov-jdk16-1.46.jar◾bctsp-jdk16-1.46.jar

在我的程序中,我已经加载了相同包的两个版本。 一个是boprov-jdk15-140.jar ,另一个是bcprov-jdk15-151.jar 。 这两者是矛盾的。

在JAR包的MANIFEST.MF文件中,它具有以下摘要:

 Name: org/bouncycastle/crypto/digests/SM3Digest.class SHA1-Digest: xxxxxxxx 

两个JAR文件具有不同的SHA1-Digest信息。

在我的情况下,我有:

 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依赖项的项目:树信息并没有真正帮助我。

以下是我解决问题的方法:

  • 我在所有M2_REPO上使用notepad ++搜索了“在文件中查找”
  • 我找到了一个项目,它在一个与“org.bouncycastle.util.Strings”完全相同的包中重新定义了“Strings”类,它应该来自“org.bouncycastle:bcprov-jdk15on”依赖项。
  • 一旦找到,我将所有这些有问题的类移到一个新包中并更新了这个项目版本。
  • 最后,我更新了项目的pom,这使我首先使用了使用新包名称的依赖项。

问题解决了。