3

基本上,Oracle 声明自包含应用程序(我想使用)将在沙盒环境中运行,并且除非您签署 jar,否则将无法访问 OS 文件系统、剪贴板等。他们的示例代码是:

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

但这确实只为我认为的主 jar 签名。我在 dist/lib 文件夹中也有一些库,所以我正在使用此代码将它们添加到我的主 jar 中:

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

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

问候, 奥勒良

4

2 回答 2

3

部署指南不正确。来自 Oracle Java 部署团队的一位工程师:“自包含应用程序与任何独立的 Java 应用程序(例如 java -jar helloworld.jar)相同 - 默认情况下它在没有安全管理器的情况下运行,并且拥有执行任何操作的所有权限,只是像任何其他本机应用程序一样。” 我已在http://javafx-jira.kenai.com/browse/RT-27483上针对部署指南提交了 Jira 票证,以便您可以跟踪它,并感谢 John Smith 提醒我们注意此错误。我为这花费了您的时间而道歉。Nancy Hildebrandt,Oracle 技术作家

于 2013-01-02T20:42:51.653 回答
0

如果您需要对您的应用程序进行签名,请对您的所有 jar 进行签名,而不仅仅是主 jar。

对于需要在各自沙箱之外运行的浏览器嵌入式或 webstart 类型的部署,您可以只签署一个 jar 而不签署其他 jar,但这会导致最终用户混淆混合代码警告对话框,因此完全不推荐。

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

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

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

某些应用程序平台(例如 OS X Gatekeeper)可能会受益于使用平台特定工具对自包含应用程序进行签名。但此类签名超出了 JavaFX 2.2.3 打包工具的范围。

于 2012-12-31T16:11:08.363 回答