在过去的几个月中,我为一个学术项目开发了一个沙盒小程序。由于Java 1.7.51对applet的安全性限制,我一直试图对自己的applet进行自签名,希望它可以符合或克服JRE对applet的要求。
我使用的是NetBeans,我以一些链接为出发点,这些链接显示了如何对jar文件进行自签名。不幸的是,我无法使其正常运行。
我试图在build.xml文件中添加以下说明:
<target name="-post-jar" depends="signing_procedure">
</target>
<target name="signing_procedure" depends="">
<echo message="Signing ${dist.dir}/MyFile.jar"/>
<exec dir="C:/Program Files/Java/jdk1.7.0_25/bin/" executable="jarsigner.exe">
<arg value="-verbose" />
<arg value="-keystore" />
<arg value="C:/Program Files/Java/jdk1.7.0_25/bin/MyKeyStore.jks" />
<arg value="-storepass" />
<arg value="mystorepass" />
<arg value="-keypass" />
<arg value="mykeypass" />
<arg value="C:/Users/Charles/Documents/ProjectsFolder/MyProject/dist/MyFile.jar" />
<arg value="MyAlias" />
</exec>
</target>
我收到以下错误消息:
Execute failed: java.io.IOException: Cannot run program "jarsigner.exe": error=2, The specified file is not found
我将非常感谢您的帮助,如果NetBeans有此帮助的话,还要感谢您!
最佳答案
参数dir
不在可执行文件所在的位置。这是将在其中执行的目录。
<exec executable="C:/Program Files/Java/jdk1.7.0_25/bin/jarsigner.exe">
如果要保持
exec
不变,则需要将resolveexecutable
参数设置为true。从Ant manual:当此属性为true时,将解析可执行文件的名称
首先针对基于项目的项目,如果不存在,
针对执行目录(如果已指定)。在Unix系统上,如果您
只希望允许执行用户路径中的命令,请设置此
虚假。从Ant 1.6开始