152 votes

Java SecurityException : signataire de l'information ne correspond pas à

J'ai recompilé mon cours comme d'habitude, et tout à coup eu le message d'erreur suivant, pourquoi ? Comment résoudre ce problème ?

java.lang.SecurityException: class "Chinese_English_Dictionary"'s signer information does not match signer information of other classes in the same package
    at java.lang.ClassLoader.checkCerts(ClassLoader.java:776)

163voto

Michael Borgwardt Points 181658

Cela se produit lorsque les classes appartenant au même package sont chargés à partir de différents fichiers JAR, et ces fichiers JAR ont des signatures signé avec les différents certificats - ou, peut-être plus souvent, au moins l'un est signé et un ou plusieurs autres ne le sont pas (ce qui inclut les classes chargées à partir de répertoires, puisque celles-autant que je sache, ne peut pas être signé).

Donc, soit de s'assurer que tous les Bocaux (ou au moins celles qui contiennent des classes à partir de la même packages) sont signés à l'aide de la même certificat, ou de supprimer les signatures du manifeste des fichiers JAR avec chevauchement des paquets.

52voto

Mohit Phougat Points 171

Un moyen simple de contourner cela est juste d'essayer de changer l'ordre de vos importé les fichiers jar qui peut être fait à partir de (Eclipse). Cliquez droit sur votre paquet -> Build Path -> Configure build path -> Références et des Bibliothèques -> de l'Ordre et de l'Exportation. Essayez de changer l'ordre des bocaux qui contiennent les fichiers de signature.

50voto

Evgeniy Philippov Points 101

A. Si vous utilisez maven, un moyen utile pour déboguer des affrontements bocaux:

mvn dependency:tree

Par exemple, pour une exception:

java.lang.SecurityException: class "javax.servlet.HttpConstraintElement"'s signer information does not match signer information of other classes in the same package

nous n':

mvn dependency:tree|grep servlet

Sa sortie:

[INFO] +- javax.servlet:servlet-api:jar:2.5:compile
[INFO] +- javax.servlet:jstl:jar:1.2:compile
[INFO] |  +- org.eclipse.jetty.orbit:javax.servlet.jsp:jar:2.2.0.v201112011158:compile
[INFO] |  +- org.eclipse.jetty.orbit:javax.servlet.jsp.jstl:jar:1.2.0.v201105211821:compile
[INFO] |  +- org.eclipse.jetty.orbit:javax.servlet:jar:3.0.0.v201112011016:compile
[INFO] +- org.eclipse.jetty:jetty-servlet:jar:9.0.0.RC2:compile

montre affrontent servlet-api 2.5 et javax.servlet 3.0.0.x.

B. d'Autres conseils utiles (comment déboguer l'exception de sécurité et comment exclure maven deps) sont à la question au Signataire de l'information ne correspond pas.

7voto

Jarek Przygódzki Points 1215

Cela peut se produire avec la cglib instrumenté par les proxys, car CGLIB utilise son propre signataire de l'information au lieu de le signataire de l'information de l'application cible de la classe.

5voto

Douglas Tybel Points 11
  1. Après l'inscription, l'accès: dist\lib
  2. Trouver d'autres .jar
  3. À l'aide de Winrar, Vous extrait d'un dossier (extrait de "nom de dossier") option
  4. Accès: META-INF/MANIFEST.MF
  5. Supprimer chaque signature comme ça:

Nom: net/sf/jasperreports/moteur/util/xml/JaxenXPathExecuterFactory.c lass SHA-256-Digest: q3B5wW+hLX/+lP2+L0/6wRVXRHq1mISBo1dkixT6Vxc=

  1. Enregistrez le fichier
  2. Fermeture à glissière
  3. Renaime ext .pot
  4. Déjà

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X