如何在Java FX 2中正确签名jar?

时间:2012-12-31 11:20:15

标签: jar sign

基本上,Oracle声明自包含的应用程序(我想使用它)将在沙盒环境中运行,除非您对jar进行签名,否则无法访问操作系统文件系统,剪贴板等。他们的样本代码是:

<fx:signjar keyStore="${basedir}/sample.jks" destdir="dist"
alias="javafx" storePass="****" keyPass="****">
    <fileset dir='dist/*.jar'/>
</fx:signjar>

但是我认为这只是为主罐子签名。我在dist / lib文件夹中也有一些库我正在使用这段代码将它们添加到我的主jar:

<fx:resources>
    <fx:fileset dir="dist" includes="lib/*.jar"/>
</fx:resources>

我是否必须将另一个文件集添加到fx:signjar中,以便对它们进行签名,或者仅仅签署主jar就足够了?

此致 奥勒利安

2 个答案:

答案 0 :(得分:3)

部署指南不正确。来自Oracle Java部署团队的工程师:“自包含的应用程序与任何独立的Java应用程序相同(例如java -jar helloworld.jar) - 它默认情况下没有安全管理器运行,并且拥有执行任何操作的所有权限,只是像任何其他本机应用程序。“我已经在http://javafx-jira.kenai.com/browse/RT-27483处针对部署指南提交了一张Jira票证,因此您可以对其进行跟踪,并感谢John Smith提醒我们此错误。我为你花费的时间道歉。 南希希尔德布兰特, 技术文件撰稿人, 甲骨文

答案 1 :(得分:0)

如果您需要签署您的应用程序,请签署所有罐子,而不仅仅是主罐子。

对于需要在各自的沙箱之外操作的浏览器嵌入式或webstart类型部署,您只能签署一个jar而不签署其他jar,但这会导致最终用户感到困惑mixed code warning dialogs而不是所有推荐。

例如,以下文件集将包含用于签名的所有分发包:

<fileset dir='dist' includes='**/*.jar'/>

不需要为自包含应用程序签名Jars来访问特权资源,因为它们默认情况下不在沙箱中运行。

某些应用程序平台(例如OS X Gatekeeper)可能会受益于使用platform specific tool签署自包含应用程序。但是这种签名超出了JavaFX 2.2.3打包工具的范围。