无符号jar的java.lang.SecurtiyException

时间:2015-05-12 08:29:42

标签: java jar certificate

我在运行时遇到SecurityException:

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

其中util.OpenNItoDTW是我自己的使用第三方jar的类。

根据this jar必须使用相同的证书进行签名

但是罐子都没有签名,请使用jdk' s jarsigner -verify进行检查。

导致这个问题的原因是什么?

2 个答案:

答案 0 :(得分:0)

确保使用尚未使用的包名称

答案 1 :(得分:0)

您可能正在使用已由其他人使用的包名称。如果他们签署了他们的工作,而你的工作是未签名的,那么你就会得到那个错误。出错的目的是保护签名内容不被原始签名者同意而被他人添加。

签名就像是说“这段代码来自我,你可以相信我”。如果有人可以在你的软件包中添加新类,那就意味着你的东西不再可信,所以这种情况就会被阻止。

将包名称视为商标。它们通常以公司网站的相反顺序开头。例如org.apache.commons.codecorg.apache开头,表示它来自运行apache.org的同一组。您应该尝试确保您的软件包名称是唯一的,这样您就不会无意中将代码表示为来自其他组织。