请问JavaSecurityException:签名者信息不匹配

JavaSecurityException:签名者信息不匹配

我像往常一样重新编译了我的类,突然收到了下面的错误消息。为什么?我怎么才能修好它?

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)


牛魔王的故事
浏览 818回答 3
3回答

慕森王

当属于同一包的类从不同的JAR文件中加载时,而这些JAR文件的签名使用不同的证书-或者更常见的是,至少有一个签名而另一个或多个没有签名(这包括从目录加载的类,因为这些AFAIK无法签名),就会发生这种情况。因此,要么确保所有JAR(或至少包含来自相同包的类)都使用相同的证书进行签名,要么使用重叠包从JAR文件清单中删除签名。

阿波罗的战车

一个简单的方法就是尝试更改导入JAR文件的顺序,这可以从Eclipse中完成。右键单击包->构建路径->配置构建路径->引用和库->订单和导出。尝试更改包含签名文件的JAR的顺序。

杨__羊羊

答:如果使用Maven,调试冲突JAR的一种有用方法是:mvn dependency:tree例如,对于一个例外:java.lang.SecurityException: class "javax.servlet.HttpConstraintElement"'s signer information does not match signer information of  other classes in the same package我们需要:mvn dependency:tree|grep servlet其产出:[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显示了Servlet-API 2.5和javax.Servlet 3.0.0.x之间的冲突。B.其他有用的提示(如何调试安全异常和如何排除maven deps)位于签名者信息不匹配.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java