J'ai recompilé mes classes comme d'habitude et j'ai soudainement reçu le message d'erreur suivant. Pourquoi? Comment puis-je y remédier?
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)
Un moyen simple de contourner ce problème est simplement d'essayer de changer l'ordre de vos fichiers jar importés, ce qui peut être fait depuis (Eclipse). Faites un clic droit sur votre package -> Chemin de construction -> Configurer le chemin de construction -> Références et bibliothèques -> Trier et exporter. Essayez de changer l'ordre des fichiers JAR contenant les fichiers de signature.
la source
A. Si vous utilisez maven, un moyen utile de déboguer les fichiers jars en conflit est:
Par exemple, pour une exception:
Nous faisons:
Sa sortie:
montre des conflits entre 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) se trouvent à la question à l' information du signataire ne correspond pas .
la source
Dans mon cas, j'avais dupliqué la version JAR de BouncyCastle dans le chemin de ma bibliothèque: S
la source
J'ai eu une exception similaire:
Le problème principal était que j'ai inclus la bibliothèque Hamcrest deux fois. Une fois en utilisant le fichier pom Maven. Et j'ai également ajouté la bibliothèque JUnit 4 (qui contient également une bibliothèque Hamcrest) au chemin de construction du projet. J'ai simplement dû supprimer JUnit du chemin de construction et tout allait bien.
la source
Cela peut se produire avec les proxys instrumentés par cglib car CGLIB utilise ses propres informations de signataire au lieu des informations de signataire de la classe cible de l'application.
la source
Nom: net / sf / jasperreports / engine / util / xml / JaxenXPathExecuterFactory.c lass SHA-256-Digest: q3B5wW + hLX / + lP2 + L0 / 6wRVXRHq1mISBo1dkixT6Vxc =
la source
Si vous l'exécutez dans Eclipse, vérifiez les fichiers JAR de tous les projets ajoutés au chemin de construction; ou effectuez control-shift-T et recherchez plusieurs fichiers JAR correspondant au même espace de noms. Supprimez ensuite les fichiers JAR redondants ou obsolètes du chemin de génération du projet.
la source
J'ai ce problème avec Eclipse et JUnit 5. Ma solution est inspirée de la réponse précédente de user2066936 Il s'agit de reconfigurer l'ordre des bibliothèques d'import:
la source
Dans mon cas, c'était un conflit de nom de package. Le projet actuel et la bibliothèque référencée signée avaient un package en commun
package.foo.utils
. Je viens de changer le nom du package sujet aux erreurs du projet actuel par autre chose.la source
Un fil un peu trop ancien mais comme je suis resté coincé pendant un certain temps à ce sujet, voici le correctif (j'espère que cela aide quelqu'un)
Mon scénario:
Le nom du package est: com.abc.def. Il y a 2 fichiers jar qui contiennent des classes de ce paquet, disons jar1 et jar2, c'est-à-dire que certaines classes sont présentes dans jar1 et d'autres dans jar2. Ces fichiers jar sont signés en utilisant le même keystore mais à des moments différents dans la construction (c'est-à-dire séparément). Cela semble entraîner une signature différente pour les fichiers dans jar1 et jar2.
J'ai mis tous les fichiers dans jar1 et les ai tous construits (et signés) ensemble. Le problème disparaît.
PS: les noms de packages et les noms de fichiers jar ne sont que des exemples
la source
Si vous avez ajouté tous les fichiers JAR de bouncycastle.org (dans mon cas de crypto-159.zip), supprimez simplement ceux des JDK qui ne s'appliquent pas à vous. Il y a des licenciements. Vous n'avez probablement besoin que des jars "jdk15on".
la source
Cette question dure depuis longtemps mais je veux apporter quelque chose. J'ai travaillé sur un défi de projet Spring et j'ai découvert cela dans Eclipse IDE. Si vous utilisez Maven ou Gradle pour les API Spring Boot Rest, vous devez supprimer Junit 4 ou 5 dans le chemin de construction et inclure Junit dans votre fichier de construction pom.xml ou Gradle. Je suppose que cela s'applique également au fichier de configuration yml.
la source
Cela se produit également si vous incluez deux fois un fichier avec des noms différents ou des emplacements différents, surtout s'il s'agit de deux versions différentes du même fichier.
la source
Je pourrais le réparer.
Cause fondamentale: il s'agit d'un problème courant lors de l'utilisation de l'implémentation Sun JAXB avec des fichiers JAR signés. Essentiellement, l'implémentation JAXB essaie d'éviter la réflexion en générant une classe pour accéder directement aux propriétés sans utiliser la réflexion. Malheureusement, il génère cette nouvelle classe dans le même package que la classe en cours d'accès, d'où provient cette erreur.
Résolution: ajoutez la propriété système suivante pour désactiver les optimisations JAXB qui ne sont pas compatibles avec les fichiers JAR signés: -Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize = true
Réf: https://access.redhat.com/site/solutions/42149
la source
Sur la base de la réponse @Mohit Phougat, si vous exécutez un Groovy avec des annotations @Grab, vous pouvez essayer de réorganiser ces annotations.
la source
cela m'est arrivé lors de l'utilisation de JUnit + soyez assuré + hamcrest, dans ce cas, n'ajoutez pas junit au chemin de construction, si vous avez le projet maven, cela m'a résolu, ci-dessous le pom.xml
la source
J'utilisais JUNIT 5 et je faisais également référence au pot externe Hamcrest. Mais Hamcrest fait également partie de la bibliothèque JUNIT 5 . Donc, je dois changer l'ordre du fichier jar Hamecrest externe dans la bibliothèque JUNIT 5 dans le chemin de construction.
la source