Java SecurityException:签名者信息不匹配

2022-08-31 07:53:56

我像往常一样重新编译我的类,突然收到以下错误消息。为什么?我该如何修复它?

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)

答案 1

当从不同的 JAR 文件加载属于同一包的类,并且这些 JAR 文件具有使用不同证书签名的签名时,就会发生这种情况 - 或者,也许更常见的是,至少有一个已签名,而另一个或多个未签名(其中包括从目录中加载的类,因为这些 AFAIK 无法签名)。

因此,要么确保所有 JAR(或者至少是那些包含来自相同包的类的 JAR)都使用相同的证书进行签名,要么从具有重叠包的 JAR 文件的清单中删除签名。


答案 2

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


推荐