在过去的几个月中,我为一个学术项目开发了一个沙盒小程序。由于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开始

09-10 07:22
查看更多