Ответ 1
Это означает, что у вас есть два или более класса в одном пакете с разными сигнатурными данными. Обычно это означает, что классы поступают из разных JAR, один из которых подписан, а другой - без знака.
Я получаю следующую ошибку в файле журнала.
(java.lang.SecurityException: класс "com.adventnet.snmp.snmp2.SecurityModelTable" информация подписчика не совпадает с информацией подписчика других классов в том же упакованный пакет
Дело в том, что я бегу под командой, он говорит, что проверка jar подтверждена.
/usr/jdk/instances/jdk1.5.0/bin/jarsigner -verify -verbose Jarfile.jar
Если файл jar проверен, то как эта проблема может возникнуть?
Это означает, что у вас есть два или более класса в одном пакете с разными сигнатурными данными. Обычно это означает, что классы поступают из разных JAR, один из которых подписан, а другой - без знака.
проверить дерево зависимостей 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 имеет довольно хороший просмотр дерева зависимостей.
Я столкнулся с этим исключением при запуске проекта Scala/Spark в Eclipse (Mars) в Windows, и это помешало мне отладить и запустить проект в среде IDE. В проекте использовался файл Maven pom.xml. Потребовалось некоторое время, чтобы решить проблему, поэтому я размещаю подробные шаги здесь, чтобы помочь другим:
Вы можете найти его в разделе, который выглядит так:
+ - 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, поскольку некоторые из них опубликовали аналогичную проблему.
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
В моей программе я загрузил две версии тех же пакетов. Один - boprov-jdk15-140.jar
, другой - bcprov-jdk15-151.jar
. Эти два конфликтуют.
В файле JIF-пакета 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" signer information does not match signer information of other classes in the same package
Это был проект с большим количеством зависимостей и зависимостью mvn: информация о дереве на самом деле мне не помогла.
Вот как я решил свою проблему:
Проблема решена.
Я столкнулся с этой проблемой в загрузочном приложении Spring. Моя проблема заключалась в том, что у меня был Junit в пути сборки, в котором есть Org.hamcrest.Matchers. * И Hamcrest, который находился в библиотеке Spring Framework в моем pom.xml в репозитории eclipse. Поэтому я удалил Junit из моего пути сборки. Включил джунит только в мой pom.xml. Поэтому мое приложение зависело от Maven для Junit и * Matchers. Так что как-то у вас есть две банки для одной необходимости. Может быть, как библиотека и как файл конфигурации.