在过去的几个月里,我为一个学术项目开发了一个沙箱小程序。由于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的帮助!
答案 0 :(得分:1)
参数dir
不是您的可执行文件所在的位置。它是将被执行的目录。
<exec executable="C:/Program Files/Java/jdk1.7.0_25/bin/jarsigner.exe">
如果您希望exec
保持原样,则需要将resolveexecutable
参数设置为true。来自Ant manual:
如果此属性为true,则解析可执行文件的名称 首先反对基于项目的项目,如果不存在, 如果指定,则执行目录。在Unix系统上,如果你 只想允许在用户路径中执行命令,设置它 为假。自从Ant 1.6
答案 1 :(得分:1)
在Netbeans 8.0.1(可能还有其他)中,有一个项目属性设置,通过指定密钥或使用生成密钥,您可以选择对项目进行签名。
- 打开并选择您的项目。
- 选择文件 - &gt;项目属性。
- 选择&#34; Web Start&#34;
- 如果尚未启用,请选中&#34;启用Web Start&#34;复选框。
- 在“Webstart属性”选项卡的“签名:”部分中选择“自定义...”按钮。
- 单击单选按钮以显示生成密钥 - 或 - 通过指定密钥签名并输入密钥信息。
- 选择如何处理混合代码。
醇>
有关此内容的更详细说明,您可以在Netbeans中查看帮助并进行搜索
Standard Java SE Project Properties Dialog Box: Web Start
。细节应该在弹出的第一个结果中。
如果您没有可信证书,请注意以下警告。
警告:未签名和自签名的WebStart应用程序和Applet 由于安全原因,从JDK7u21开始不推荐使用。确保 未来正确的功能请签署WebStart应用程序和 使用可信证书的小程序。
答案 2 :(得分:0)
我想出了怎么做。需要将以下行添加到build.xml,位于NetBeans上相应项目的文件选项卡下:
<target name="-post-jar" depends="Signing Procedure">
</target>
<target name="Signing procedure" depends="">
<echo message="Signing ${dist.dir}/MyAppet.jar..."/>
<exec dir="${dist.dir}" executable="C:/Program Files/Java/jdk1.7.0_25/bin/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="mystorepassword" />
<arg value="-keypass" />
<arg value="mykeypassword" />
<arg value="C:/Users/Charles/Documents/MyNetBeansProjects/MyProject/dist/MyApplet.jar" />
<arg value="MySelfSignatureAlias" />
</exec>
</target>
我希望这对其他用户有用!
答案 3 :(得分:0)
我的JavaFX应用程序需要在沙箱中运行。 这是我走向成功的道路..
开发环境:
第1步:让应用程序以&#34; Unrestricted Access&#34;运行弹出窗口。
第2步:让应用程序运行&#34;限制访问&#34;弹出窗口。
使用Firefox和IE测试。不适用于Chrome。