签名者信息不匹配

时间:2012-01-16 09:39:44

标签: java

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

  

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

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

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

如果jar文件已经过验证,那么该怎么办?

7 个答案:

答案 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文件。需要一段时间才能解决,所以我在这里发布了详细的步骤来帮助其他人:

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

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

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

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

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

  8. 请注意,您无法通过重新排序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依赖项的项目:树信息对我没有帮助。

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

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

问题解决了。

答案 6 :(得分:0)

我在Spring Boot应用程序中遇到了这个问题。我的问题是,我的构建路径中有Junit,其中包含Org.hamcrest.Matchers。*和Hamcrest,后者位于eclipse存储库中pom.xml中的Spring框架库中。所以我要做的是从构建路径中删除Junit。仅在我的pom.xml中包含Junit。因此,我的应用程序依赖于Junit和* Matchers的Maven。因此,您不知何故需要两个罐子。也许作为库和配置文件。