【问题标题】:sign a Jar file签署一个 Jar 文件
【发布时间】:2013-01-30 23:40:33
【问题描述】:
我在 jar 中手动添加了一些类文件。并在服务器中替换。但是服务器没有拿出这个新的 jar 说:java.lang.SecurityException: class "test.TestProcess2"'s signer information does not match the other classes in the same package.
我是否需要在更新后对 jar 签名以及如何做。
提前致谢
【问题讨论】:
标签:
java
jarsigner
jar-signing
【解决方案1】:
是的。
您也可以为命令行手动签名 jar。例如,在 windows 中,它看起来更像是这样的:
"{YOUR_JDK_INSTALL_PATH}\bin\jarsigner.exe" -verbose -keystore {YOUR_KEYSTORE_PATH} -storepass {YOUR_STORE_PASS} -keypass {YOUR_KEY_PASS} {JAR_FILE}
【解决方案2】:
更新后需要对jar签名吗?
当然,签名 jar 的关键在于内容不会被除您之外的其他人修改。如果你手动修改,那你就得辞职了。
在我的例子中,我使用 Eclipse 和 Ant 来构建项目。所以每次我重建项目时,jar 都会被辞职。
<signjar jar="myapplet.jar" keystore="myKeyStore" alias="me" storepass="pass"/>
【解决方案3】:
问题在于您的 JAR 中的其他类与您添加的类的签名不同。添加新类后,要么不签署整个 JAR,要么退出 JAR。可以找到jarsigner工具here的信息