JarSigner 在 java 中完成?
是否可以使用 JarSigner 类在 java 中对 jar 文件进行签名?目前我正在使用:
String args[] = {"-keystore", keystore, "-storepass", password, jar, keyname};
JarSigner js = new JarSigner();
js.run(args);
但如果出现任何问题,js.run void 将调用 System.exit(-1) 导致我的整个应用程序崩溃。我正在考虑在线程内部运行它,加入它直到完成,然后检查返回代码。只是看看是否有更正式的方法来做到这一点......任何帮助将不胜感激。
Is it possible to use the JarSigner class to sign a jar file within java? Currently I am using:
String args[] = {"-keystore", keystore, "-storepass", password, jar, keyname};
JarSigner js = new JarSigner();
js.run(args);
but if anything fails, the js.run void will call a System.exit(-1) causing my entire application to crash. I was thinking about running that inside of a thread, joining it until it completes, and checking for the return code. Just seeing if there is a more formal way of doing that... Any help would be appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我想您使用 JDK 工具中包含的 Sun/Oracle
JarSigner
。您有两个选择:通过复制/粘贴大部分
run
方法重用,以跳过catch
子句中的System.exit
<一href="http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/security/tools/JarSigner.java#JarSigner.run%28java.lang.String %5B%5D%29" rel="nofollow">OpenJDK 源 例如使用来自 GNU ClassPath 项目的 JarSigner 的
start
方法不会调用System.exit
但会抛出异常。I suppose you use Sun/Oracle
JarSigner
included in JDK tools. You have two option:Reuse by copy/paste most of the
run
method to skip theSystem.exit
incatch
clause from the OpenJDK source for instanceUse JarSigner from GNU ClassPath project which
start
method does not invokeSystem.exit
but throws exceptions.如果您仅使用 SHA1withRSA 算法进行签名,则有一个名为 zip- 的项目签名者。该项目的主要目标是Android,但该项目的核心库“zipsigner-lib”不依赖于Android系统,因此它也可以在PC上运行。您可以查看名为 zipsigner-cmdline。
不过,如果您需要 SHA1withRSA 以外的算法,您可能必须改编 GNU ClassPath 项目的源代码,这并不是一件容易的事。
If you sign only with SHA1withRSA algorithm, there is a project called zip-signer. The main target of this project is Android, but the core library of this project, "zipsigner-lib", doesn't depend on Android system so it works in PC as well. You can take a look at sample code for PC named zipsigner-cmdline.
If you need algorithms other than SHA1withRSA, though, you'll probably have to adapt source codes from the GNU ClassPath project, which is no easy task.