Информация о подписчиках не соответствует

Я получаю следующую ошибку в файле журнала.

(java.lang.SecurityException: класс "com.adventnet.snmp.snmp2.SecurityModelTable" информация подписчика не совпадает с информацией подписчика других классов в том же упакованный пакет

Дело в том, что я бегу под командой, он говорит, что проверка jar подтверждена.

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

Если файл jar проверен, то как эта проблема может возникнуть?

Ответ 1

Это означает, что у вас есть два или более класса в одном пакете с разными сигнатурными данными. Обычно это означает, что классы поступают из разных JAR, один из которых подписан, а другой - без знака.

Ответ 2

проверить дерево зависимостей pom для тех же пакетов разных версий.

У меня была эта проблема с itext-2.1.7, включая старый bouncycastle 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 имеет довольно хороший просмотр дерева зависимостей.

Ответ 3

Я столкнулся с этим исключением при запуске проекта Scala/Spark в Eclipse (Mars) в Windows, и это помешало мне отладить и запустить проект в среде IDE. В проекте использовался файл Maven pom.xml. Потребовалось некоторое время, чтобы решить проблему, поэтому я размещаю подробные шаги здесь, чтобы помочь другим:

  • Перейдите в папку, в которой находится файл проекта pom.xml
  • Запустите команду: mvn dependency: tree -Dverbose > Depends.Txt Убедитесь, что у вас нет файла Depends.Txt или он будет перезаписан!
  • Поиск в файле Depends.Txt для класса unsigned, о котором жалуется Eclipse IDE. В моем случае это был javax.servlet.
  • Вы можете найти его в разделе, который выглядит так:

    + - org.apache.hadoop: hasoop-mapreduce-client-core: jar: 2.6.0: предоставляется

    + - javax.servlet: servlet-api: jar: 2.5: предоставляется

  • Идентификатор группы Maven, из которого вы хотите исключить дублирующий класс из приведенного выше: hasoop-mapreduce-client-core

  • Добавьте раздел исключений, в котором перечисляется группа исключений в pom.xml после оболочки. В моем случае это был groupid javax.servlet.

  • Обратите внимание, что вы не можете решить эту проблему, изменив порядок сборки Java, поскольку некоторые из них опубликовали аналогичную проблему.

Ответ 4

java.lang.SecurityException: информация о подписчике класса "org.bouncycastle.asn1.ASN1ObjectIdentifier" не соответствует информации подписчика других классов в одном пакете

Ans: У меня также было такое же исключение, когда я пытался защитить PDF-пароль.

Я добавил ниже банки, чтобы решить то же самое.

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

Ответ 5

В моей программе я загрузил две версии тех же пакетов. Один - boprov-jdk15-140.jar, другой - bcprov-jdk15-151.jar. Эти два конфликтуют.

В файле JIF-пакета MANIFEST.MF он имеет следующий дайджест:

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

Два файла JAR имеют другую информацию SHA1-Digest.

Ответ 6

В моем случае у меня было:

Caused by: java.lang.SecurityException: class "org.bouncycastle.util.Strings" signer information does not match signer information of other classes in the same package

Это был проект с большим количеством зависимостей и зависимостью mvn: информация о дереве на самом деле мне не помогла.

Вот как я решил свою проблему:

  • Я выполнил поиск "Найти в файлах", используя блокнот ++ на всех M2_REPO
  • Я нашел проект, который переопределил класс "Строки" в пакете, который точно совпадает с "org.bouncycastle.util.Strings", который должен исходить из зависимости "org.bouncycastle: bcprov-jdk15on".
  • После обнаружения я переместил все эти проблемные классы в новый пакет и обновил эту версию проекта.
  • Наконец, я обновил мотив проекта, который вызвал у меня проблемы с тем, чтобы использовать мою зависимость, которая использует новое имя пакета.

Проблема решена.

Ответ 7

Я столкнулся с этой проблемой в загрузочном приложении Spring. Моя проблема заключалась в том, что у меня был Junit в пути сборки, в котором есть Org.hamcrest.Matchers. * И Hamcrest, который находился в библиотеке Spring Framework в моем pom.xml в репозитории eclipse. Поэтому я удалил Junit из моего пути сборки. Включил джунит только в мой pom.xml. Поэтому мое приложение зависело от Maven для Junit и * Matchers. Так что как-то у вас есть две банки для одной необходимости. Может быть, как библиотека и как файл конфигурации.